本篇文章假設你已經有一個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吃的主機名稱
而不是真正要連的主機名稱
應該就可以了。