在一個客戶端上使用多個SSH私鑰的最佳方法

我想使用多個私鑰鏈接到不一樣的服務器或同一服務器的不一樣部分(個人用途是服務器的系統管理,Git的管理以及同一服務器內的正常Git使用)。 我試圖簡單地將密鑰堆疊在id_rsa文件中無濟於事。 git

顯然,一種簡單的方法是使用如下命令 bash

ssh -i <key location> login@server.example.com

那很麻煩。 服務器

關於如何進行此操做的任何建議都容易一點? ssh


#1樓

使用ssh-agent做爲密鑰。 測試


#2樓

從個人.ssh/configurl

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


#3樓

我贊成Tuomas關於使用ssh-agent的意見。 我還想添加第二個私鑰來工做, 本教程對我來講就像是一種魅力。 debug

步驟以下: code

  1. $ ssh-agent bash
  2. $ ssh-add /path.to/private/key例如ssh-add ~/.ssh/id_rsa $ ssh-add /path.to/private/key ssh-add ~/.ssh/id_rsa
  3. 經過$ ssh-add -l驗證
  4. 使用$ssh -v <host url>測試,例如ssh -v git@assembla.com

#4樓

您能夠指示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要求輸入密碼。

固然,它不會像其餘答案中那樣超越每一個服務器的配置,可是至少您沒必要爲鏈接到的全部服務器添加配置!


#5樓

您能夠在~/.ssh文件夾中建立一個名爲config的配置文件。 它能夠包含:

Host aws
    HostName *yourip*
    User *youruser*
    IdentityFile *idFile*

這將容許您鏈接到這樣的機器

ssh aws
相關文章
相關標籤/搜索