其实这个问题的网上、园子里已经有很多的博客介绍了,但多数都忽略了一个问题,就是生成公钥时是不要输入密码的,整理一下:
1. 有A,B两台机(Linux/unix), 要想从A用ssh远程登录到B上(假设各自的IP,A:192.168.100;B:192.168.1.104)。
2. 在A机上,用“ssh-keygen -t rsa”命令生成公钥,注意这里一直回车就是了。好了,这时在“~/.ssh/”下就已经生成“id_rsa、id_rsa.pub”两个文件了。
3. 还在A机上,将刚才生成的id_rsa.pub文件复制到B机上,可以使用命令“scp ~/.ssh/id_rsa.pub root@192.168.1.104:/root/”,这时就把id_rsa.pub文件复制到B机的/root下了。
4. 用root用户登录到B机上,这时就可以看到刚刚复制过来的id_rsa.pub文件了,使用命令“cat id_rsa.pub >> ~/.ssh/authorized_keys” 将A机的公钥加入到authorized_keys文件,(有时~/下没有.ssh文件夹或没有authorized_keys文件,如果这样,自己手动创建就好了)。
5. 还在B机上,重启sshd服务,命令“service ssh restart”。
6. 回A机上,试试, 命令“ssh root@192.168.1.104”, 不出意外就无需密码登录进去了!
要注意的事项:
1. ssh-keygen -t rsa 生成公钥时一直回车不要输入密码,就是空密码。
2. 要用哪个用户远程登录就把id_rsa.pub复制到用户对应路径下,如:root用户就复制到/root/下; andychen用户就复制到/home/andychen/下,不要混了。
3. B机上的文件权限: .ssh文件夹(700);authorized_keys(600)。