Step 1 產生一對 公私鑰
不同的主機 所使用的金鑰機制不見得相同 常見的金鑰編碼機制有
- RSA2 (id_rsa.pub / id_rsa)
- DSA (id_dsa.pub / id_rsa)
- RSA1 (identity.pub / identity)
透過金鑰產生器產生一對 公開金鑰 與 私密金鑰
>>> ssh-keygen -t rsa>>> ssh-keygen -t dsa>>> ssh-keygen -t rsa1
Step 2 將公開金鑰的內容放到遠端主機上
>>> (local) ssh-copy-id -i <path/to/id_xxx.pub> <username@ip> # 推薦OR
>>> (local) cat .ssh/id_rsa.pub | ssh <usernaem@retmoe> 'cat >> .ssh/authorized_keys' # 當遠端主機沒有 ~/.ssh 目錄時,會失效。如果沒有特別的需求, 你可以在你常用的機器上共用相同的公私鑰。
這對公私鑰必須被妥善保管, 若被其他人取得,則該員也將具有登入遠端主機的身份。
>>> ssh -i <path/to/identify> <username@ip>舉個例子, 當你在產生金鑰的機器上, 有其他人有 sudo 的權限, 那麼就有可能被取走你的公私鑰。
為了安全性的考量,你需要設定一個強度足夠的 passphrase 。
passphrase ( ssh-agent )
金鑰產生器 (ssh-keygen) 在產生金鑰時, 會要求你填入 passphrase,預設沒有 passphrase。
為了增加安全性,可以輸入一個複雜的 passphrase, 這麼做,日後在登入遠端的主機時, 雖然不需要打密碼,但卻要輸入相同的 passphrase。
ssh-agent
藉由 ssh-agent 的機制, 能讓你不需要一再地輸入 passphrase。
>>> eval `ssh-agent -s`>>> ssh-add ~/.ssh/id_rsa#>>> ssh-add ~/.ssh/id_dsa
#>>> ssh-add ~/.ssh/identity
輸入對應的 passphrase
透過 ssh-agent 管理你的私密金鑰以及 passphrase, 在登入遠端主機時,就不需要輸入密碼以及 passphrase。
Tips
在安全性的考量下 遠端主機 ~/.ssh/authorized_keys 的權限會被設定唯讀 400, 這時候需要先將這個檔案的權限放寬成 600,將本地端的公鑰內容放入之後,再換回 400。
>>> (local) ssh server-user@server-host "chmod 600 ~/.ssh/authorized_keys" >>> (local) ssh-copy-id -i <path/to/id_xxx.pub> <username@ip> >>> (local) ssh server-user@server-host "chmod 400 ~/.ssh/authorized_keys"