天天看點

ssh-agent代理管理git私鑰 ssh-agent

ssh-agent

ssh-agent是一種控制用來儲存公鑰身份驗證所使用的私鑰的程式。      

ssh-agent是一個密鑰管理器,運作ssh-agent以後,使用ssh-add将私鑰交給ssh-agent保管,其他程式需要身份驗證的時候可以将驗證申請交給ssh-agent來完成整個認證過程。

$eval `ssh-agent -s` 注意這裡是反引号

$ssh-add

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

ssh-agent是管理多個ssh key的代理,受管理的私鑰通過ssh-add來添加

好處1:不用重複輸入密碼。

用 ssh-add 添加私鑰時,如果私鑰有密碼的話,照例會被要求輸入一次密碼,在這之後ssh-agent可直接使用該私鑰,無需再次密碼認證。

好處2:不用到處部署私鑰

假設私鑰分别可以登入同一内網的主機 A 和主機 B,出于一些原因,不能直接登入 B。可以通過在 A 上部署私鑰或者設定 Forwarding 登入 B,也可以轉發認證代理連接配接在 A 上面使用ssh-agent私鑰登入 B;可以在A上直接sftp傳檔案到B上。

如這邊有一台機器是local,能通過公鑰直接登陸server1和server2。server1和server2之間無公鑰登陸。

現在要在server1上直接登陸server2,在local上執行

ssh-agent
ssh-add

執行了之後就将私鑰給ssh-agent保管了,server1上面登陸server2的時候,需要私鑰驗證的時候直接找ssh-agent要就可以了。
      

接下來登陸server1,注意-A

ssh -A server1      

可以發現server1上多了/tmp/ssh-xxxxxxxxx/agent.xxxxx的socket,之後神奇的事發生了,在 server1上可直接進server2,隻需執行如下指令,如果加了-A則可以繼續ssh forwarding,以至無限的機器forwarding。

ssh (-A) server2      

同樣的原理可以試一下sftp, scp等基于ssh的指令。

如運作ssh-add,遇到“Could not open a connection to your authentication agent.”。

解決:需要ssh-agent啟動bash,或者說把bash挂到ssh-agent下面。

ssh-agent bash --login -i
ssh-add