我想使用多個私鑰鏈接到不一樣的服務器或同一服務器的不一樣部分(個人用途是服務器的系統管理,Git的管理以及同一服務器內的正常Git使用)。 我試圖簡單地將密鑰堆疊在id_rsa
文件中無濟於事。 git
顯然,一種簡單的方法是使用如下命令 bash
ssh -i <key location> login@server.example.com
那很麻煩。 服務器
關於如何進行此操做的任何建議都容易一點? ssh
使用ssh-agent做爲密鑰。 測試
從個人.ssh/config
: url
Host myshortname realname.example.com HostName realname.example.com IdentityFile ~/.ssh/realname_rsa # private key for realname User remoteusername Host myother realname2.example.org HostName realname2.example.org IdentityFile ~/.ssh/realname2_rsa # different private key for realname2 User remoteusername
等等。 spa
我贊成Tuomas關於使用ssh-agent的意見。 我還想添加第二個私鑰來工做, 本教程對我來講就像是一種魅力。 debug
步驟以下: code
$ ssh-agent bash
$ ssh-add /path.to/private/key
例如ssh-add ~/.ssh/id_rsa
$ ssh-add /path.to/private/key
ssh-add ~/.ssh/id_rsa
$ ssh-add -l
驗證 $ssh -v <host url>
測試,例如ssh -v git@assembla.com
您能夠指示ssh在鏈接時連續嘗試多個鍵。 這是如何作: server
$ cat ~/.ssh/config IdentityFile ~/.ssh/id_rsa IdentityFile ~/.ssh/id_rsa_old IdentityFile ~/.ssh/id_ed25519 # ... and so on $ ssh server.example.com -v .... debug1: Next authentication method: publickey debug1: Trying private key: /home/example/.ssh/id_rsa debug1: read PEM private key done: type RSA debug1: Authentications that can continue: publickey debug1: Trying private key: /home/example/.ssh/id_rsa_old debug1: read PEM private key done: type RSA .... [server ~]$
這樣,您沒必要指定哪一個密鑰可與哪一個服務器一塊兒使用。 它只會使用第一個工做密鑰。
另外,若是給定的服務器願意接受密鑰,則僅輸入密碼。 如上所示,即便沒有密碼,ssh也不會嘗試爲.ssh/id_rsa
要求輸入密碼。
固然,它不會像其餘答案中那樣超越每一個服務器的配置,可是至少您沒必要爲鏈接到的全部服務器添加配置!
您能夠在~/.ssh
文件夾中建立一個名爲config
的配置文件。 它能夠包含:
Host aws HostName *yourip* User *youruser* IdentityFile *idFile*
這將容許您鏈接到這樣的機器
ssh aws