一、情景
公司剛上幾台Linux,現在要把主機之間都能遠程ssh免密碼登陸。
二、原理
很簡單,使用ssh-keygen 在主機A上生成private和public密鑰,將生成的public密鑰拷貝到遠程機器主機B上後,就可以使用ssh命令無需密碼登錄到另外一台機器主機B上。
三、步驟
主機A:
1、 生成公鑰和私鑰文件id_rsa和id_rsa.pub (敲3下回車即可)
[root@bogon ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
67:da:0d:79:e0:d6:2b:cd:7d:22:af:51:7e:9c:75:fe root@bogon
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| .|
|. + |
| S B o . o|
|* * = o+|
| . o B +.=|
| . + +.|
|... E|
+-----------------+
2、ssh-cop-id命令會將指定的公鑰文件復制到遠程計算機
[root@bogon ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub
[email protected]
The authenticity of host '10.1.250.166 (10.1.250.166)' can't be established.
RSA key fingerprint is c8:9d:6d:92:55:77:3d:3e:af:f5:cb:18:80:5a:47:93.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.1.250.166' (RSA) to the list of known hosts.
reverse mapping checking getaddrinfo for bogon [10.1.250.166] failed - POSSIBLE BREAK-IN ATTEMPT!
[email protected]'s password: <主機B的登陸密碼>
Now try logging into the machine, with "ssh '
[email protected]'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
3、然後ssh登陸主機B驗證是否需要密碼
[root@localhost ~]# ssh 10.1.250.166
reverse mapping checking getaddrinfo for bogon [10.1.250.166] failed - POSSIBLE BREAK-IN ATTEMPT!
Last login: Wed Oct 21 10:05:39 2015 from 10.1.250.141
[root@bogon ~]#
4、登陸成功後,我們需要在主機B也做下以上3步,這樣就可以相互免密碼ssh登陸。(如果有多台主機,每台主機都做下相同操作,以方便以後管理)。
5、權限問題
建議用其他用戶做ssh登陸的話,調整目錄文件權限
設置authorized_keys權限
chmod 644 authorized_keys
設置.ssh目錄權限
chmod 700 -R .ssh
6、要保證.ssh和authorized_keys都只有用戶自己有寫權限。否則驗證無效。