原文:http://www.linuxidc.com/Linux/2013-01/77464.htm
1.环境
server:192.168.1.126
client:192.168.10.160
现在要让client实现ssh远程登录server上时不需要密码即可登录假设用vhdp账号登陆,该账号有sudo权限。
2.方法:
我们使用ssh-keygen在Client上生成private和public密钥,将生成的public密钥拷贝到远程机器Server上后,就可以使用ssh命令无需密码登录到另外一台机器Server上。
在linux系统中,ssh是远程登录的默认工具,因为该工具的协议使用了RSA/DSA的加密算法,该工具做linux系统的远程管理是非常安全的。3.在Client端上执行
生成密钥:ssh-keygen
这时程序会让你输入密码,直接回车表示不设置密码,并且会在当前目录中生成private和public密钥,分别是id_rsa 、id_rsa.pub。
把公钥文件上传至server端:scp ~/.ssh/id_rsa.pub vhdp@server:/home/vhdp/.ssh/
5.在服务器执行
a.登录服务器:ssh vhdp@server
b.进入ssh目录:cd ~/.ssh
c.生成授权文件:cat id_rsa.pub >> authorized_keys
d.修改ssh配置文件:vim /etc/ssh/sshd_config,去掉RSAAuthentication三行的注释,修改如下:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
e.修改目录和文件权限(非常重要,原理还不明白)
chmod 700 ./.ssh
chmod 600 ./.ssh/authorized_keys
f.重启ssh服务
sudo service sshd restart
然后在客户端就可以免密码登录server了:ssh vhdp@server
如果没询问密码并能登录,表示成功了。如果没有成功,输出测试调试看看是哪里出了问题。
ssh -v vhdp@server 看看这里的信息及/var/log/secure中的日志记录,找出原因。
ps.如果要设置vhdp用户sudo无密码,执行以下操作
visudo
在root ALL=(ALL) ALL下面加一行:
vhdp ALL=NOPASSWD: ALL