作为一个unix/linux小白,今天折腾了下ssh登录,使用rsa,不再需要输入密码了,具体步骤如下:
- 在本机(客户端)生成rsa密钥
- ssh-keygen -t rsa
这个命令会要提示三次输入:
1、第一次是存储rsa密钥的文件名称,默认的是id_rsa,可以直接回车使用默认的,也可以自己定义新的名称,最好还是放到.ssh目录下就可以了;
2、第二次是输入密码,最好输入一个密码,虽然可以为空(mac os下,请记住这个密码,第一次使用时需要输入)
3、第三次确认一次密码即可
生成的密钥文件有两个,以默认的为例,将会有一个id_rsa和id_rsa.pub,以.pub结尾的就是公钥,另外一个是密钥 - 添加rsa公钥到服务器上
使用scp将.pub文件复制到服务器上,使用如下命令添加新的密钥- cat id_rsa.pub >> ~/.ssh/authorized_keys
然后通过重启sshd就可以了
- /etc/init.d/sshd restart
不同平台重启命令可能不同,可以参考http://www.cyberciti.biz/faq/howto-restart-ssh/
PS: 如果在设置好了这些还是提示要密码登录,请检查ssh是否打开了rsa验证的设置,具体包括:
- 在/etc/ssh/sshd_config中将以下注释去掉(去掉行首的#号)
- RSAAuthentication yes
- PubkeyAuthentication yes
- AuthorizedKeysFile .ssh/authorized_keys
- 在/etc/ssh/ssh_config中添加下面两句到host下:
- Protocol 2
- RSAAuthentication yes
再次重启下sshd就可以了,第一次使用rsa登录时mac os会弹出提示要输入rsa的密码,就是在创建rsa密钥时指定的。
Enjoy!
参考资料:http://news.softpedia.com/news/How-to-Use-RSA-Key-for-SSH-Authentication-38599.shtml
==Another Article========================================================
http://wiki.chinaunix.net/Ssh_rsa
-
ssh如何利用RSA公钥进行远程登录验证
1、本地机器生成密钥
$ssh-keygen -t rsa
生成基于ssh协议第二版密钥,如果还是用rsa1,该升级了。
2、复制生成的id_rsa.pub公钥文件到远程服务器,简单的用:
$scp id_rsa.pub bsduser@192.168.1.188:mykey.pub
3、密码登陆远程服务器:
$ssh 192.168.1.188 -l bsduser
这里注意不是cp,而是cat;不是">",而是">>"的操作:
%cat mykey.pub >> $HOME/.ssh/authorized_keys
4、重启sshd
#/etc/rc.d/sshd restart
5、此时进行登录测试:
$ssh bsduser@192.168.1.188
成功,则可以不用输入繁琐和易泄露的密码。但是条件是你要保护好自己的密钥文件信息。