分类: LINUX
2010-11-19 22:19:04
客户端:
生成公钥和私钥,
ssh-keygen |
一路回车,如果之前使用过此命令,会有提示有已经生成好的公钥和私钥,一般放在~/.ssh目录里
拷贝公钥到服务器端
scp ~/.ssh/id_rsa.pub username@serverip:~ |
登录服务器端,
ssh username@serverip |
将公钥添加到授权密钥中,
cat id_rsa.pub >>~/.ssh/authorized_keys |
确保授权密钥文件权限是600,
chmod 600 ~/.ssh/authorized_keys |
exit |
客户端测试,
ssh username@serverip |
应该已经可以无密码登录了
详细参考资料:
使用 RSAAuthentication(SSH1协议)或 PubkeyAuthentication(SSH2协议)可不必记住每个远程系统的连接密码。一般,我们都使用SSH2协议。
服务器端:编辑/etc/ssh/sshd_config,将PubkeyAuthentication yes前的注释符去掉。(在Debian系统中,默认是已经去掉的,但在Redhat下面,默认有关闭的)。重启ssh服务。(Debian下是 /etc/init.d/ssh,Redhat下是/etc/init.d/sshd)
客户端机器:生成RSA验证密匙文件或者DSA验证密匙文件。ssh-keygen -t rsa或者ssh-keygen -t dsa。此时会在~/.ssh目录下面,生成id_dsa文件和id_dsa.pub(使用dsa)或者id_rsa和id_rsa.pub(使用 rsa)。其中id_dsa和id_rsa是验证私钥,id_dsa.pub和id_rsa.pub是公钥,必须确保它的安全性。将公钥拷到服务器上的~/.ssh/authorized_keys文件里。
进行远程连接测试:ssh
user1@remote,应该是不需要密码了。如果还需要密码,请登录远程服务器,检查~/.ssh/authorized_keys文件的访问权限。请确定其访问权限为0600,否则系统因为安全问题会拒绝使用authorized_keys文件进行验证。为了使这种方式能够工作,在必须在服务器端的/etc/ssh/sshd_config
和客户端的/etc/ssh/ssh_config中同时设置HostbasedAuthentication为yes(如果客户端用户没有超级用户权限,则可以在~/.ssh/config中设置)。默认情况下Debian和Redhat都已经将HostbasedAuthentication设为了
yes,不需修改。如果仍出现问题,可用ssh -v user1@remote进行调试。
chinaunix网友2010-11-22 18:00:58
很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com