Linux下單一帳號使用多個ssh-key

本篇文章假設你已經有一個ssh-key了

情境範例

遠端主機提供gitolite(一種git server)服務,提供server上有repo-software和repo-document兩個repository。平常你使用repo-software的rd@localhost的ssh-key開發專案。後來因故需要maintain 文件,所以需要新增doc@localhost的ssh-key去管理repo-document。

下面的情境假設你預設是rd@localhost的ssh-key,所以你要新增doc@localhost的ssh-key。

測試環境

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.2 LTS
Release:    14.04
Codename:   trusty

新增方式

  • 產生新的ssh-key
$ ssh-keygen -t rsa  -f 儲存key_檔名 -C "你的email"

範例

$ ssh-keygen -t rsa  -f doc_key_rsa -C "doc@localhost"
  • 搬到.ssh目錄 假設你存的檔名是~/doc_key_rsa
mv ~/doc_key_rsa* ~/.ssh
  • 修改.ssh/config 格式如下
# 這是註解 :p
Host ssh吃的主機名稱
    HostName 真正要連的主機名稱
    PreferredAuthentications publickey
    IdentityFile 儲存key_檔名

ssh吃的主機名稱真正要連的主機名稱可以不同。詳細的應用方式可以看參考資料。
來個範例

# 這是註解 :p
Host doc.remote_host
    HostName remote_host
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/doc_key_rsa

驗證

透過ssh-add -l看看你加入的key已經在list了

$ ssh-add -l

接下來在請管理者把新的public key放入真正要連的主機的gitolite管理中心,然後連線的時候用ssh吃的主機名稱而不是真正要連的主機名稱應該就可以了。

參考資料

comments powered by Disqus