這邊紀錄一下如何 ssh連線其它機器可以免輸入密碼登入。
假設我們目前在 A機器,想要連線 B機器。
先在 A機器產生 id_rsa與 id_rsa.pub,若已產生可免去此步驟, key預設放在 ~/.ssh,按下 enter繼續。
jim@A:~ $ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/users/jim/.ssh/id_rsa):
請勿輸入密碼,直接按下 enter繼續。
Enter passphrase (empty for no passphrase):
一樣不用輸入密碼,直接按下 enter繼續。
Enter same passphrase again:
建立好 key了。
Your public key has been saved in /home/users/jim/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Q14hkz7AJG0rcEv1kmffq6gE5C6GkqTb9J/CYWj8UHw jim@A
解說一下產生的一對 key的作用。
- id_rsa: private key
- id_rsa.pub: public key
將 id_rsa.pub的內容複製到遠端機器的 ~/.ssh/authorized_keys中,之後在登入時,便會用本地的 id_rsa與遠端機器的 id_rsa.pub做認證,便可免輸入密碼登入遠端機器。
接下來在 B機器建立目錄 ~/.ssh,如果已有可跳過此步驟。
jim@A:~ $ ssh b@B mkdir -p .ssh
jim@B's password:
把 A機器的 ~/.ssh/id_rsa.pub也就是 public key複製到 B機器的 .ssh/authorized_keys。
方法 1
jim@A:~ $ cat .ssh/id_rsa.pub | ssh jim@B 'cat >> .ssh/authorized_keys'
jim@B's password:
方法 2
jim@A:~ $ ssh-copy-id -i .ssh/id_rsa.pub jim@B
jim@B's password:
即可成功登入 B機器而不需要輸入密碼了。
jim@A:~ $ ssh jim@B