Cyber Coding Course

師其意,不泥其跡

ssh-agent及ssh-add認證代理員

在ssh的核心套件中的程式諸如,scp、ssh、ssh-add、ssh-agent、sshd及ssh-keygen
本文主要簡單描述ssh-agent及ssh-add使用情境。

在開始前先來看看這些指令用途的簡介:
scp Secure Copy主機間進行加密安全的拷貝。
ssh Secure Shell用戶端,用來連接伺服器執行系統命令,可以視為有加密的telnet。
ssh-add 把金鑰識別加到驗證代理員。
ssh-agent 進行公鑰驗證時,讓遠端主機可以存取儲存您的私人鑰匙。
sshd 預設會聆聽通訊埠22的Secure Shell伺服器。
ssh-keygen ssh的金鑰產生器,可以產生公私鑰對,進行遠端主機的公鑰驗證。
我們使用 ssh-add 前,先來看看驗證代理員(ssh-agent -- authentication agent),如何啟動他?
非常簡單,只要在命令列輸入命令 ssh-agent 即可。
ssh-agent
完成後,我們就可以透過 ssh-add 命令,將金鑰加入到 ssh-agent (驗證代理員)。
未使用任何參數時, ssh-add 會去新增~/.ssh/id_rsa, ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 and ~/.ssh/identity.
金鑰有密碼時,會要求輸入金鑰的密碼,如果提供了多個金鑰檔,他會記住最後一組輸入的密碼

用途一(記憶密碼):
所以我們可以透過 ssh-add 把密碼加入到 ssh-agent 來記憶我們的金鑰密碼,
這樣我們連線到遠端主機時就不需打複雜的金鑰密碼了。
我們可以透過-K,將密碼記憶到鑰匙圈中。(在Mac OS上重開機就會忘了ssh-agent金鑰)

用途二 (轉發驗證代員連線): 噢太文言文了,說白一點,就是跨主機驗證。

Client---->ServerA---->ServerB。

舉例,Server A無法登入Server B,我們Client是能登A及B的。
我們可以透過 ssh -A ServerA ,因為有了-A參數,啟動了轉發(forwarding)功能,這樣就連到ServerA再透過轉發代理,使用我們的金鑰連到ServerB了。
我們能透過,如下的指令 ssh-add -L 查看新增到ssh-agent的公鑰。

不過每次啟用這個功能好像很麻煩,所以我們也可以將他加入到自己的ssh組態檔中。
~/.ssh/config
Host ServerA
  HostName 35.194.181.21
  ForwardAgent yes

作者: Devin Yang