一、准备工作:
1、确认本机sshd的配置文件(需要root权限)#vim /etc/ssh/sshd_config找到以下内容,并去掉注释符”#“
RSAAuthentication yesPubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys#关闭密码登陆PasswordAuthentication no
2、如果修改了配置文件需要重启sshd服务 (需要root权限)
#systemctl restart sshd.service
配置SSH无密码登录需要3步:
1.生成公钥和私钥 2.导入公钥到认证文件,更改权限 3.测试1.生成公钥和私钥$ssh-keygen -t rsa
默认在 ~/.ssh目录生成两个文件:
id_rsa :私钥 id_rsa.pub :公钥2.导入公钥到认证文件,更改权限 2.1 导入本机$cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys2.2 导入要免密码登录的服务器 首先将公钥复制到服务器
$scp ~/.ssh/id_rsa.pub xxx@host:/home/id_rsa.pub
然后,将公钥导入到认证文件(这一步的操作在服务器上进行)
$cat /home/id_rsa.pub >> ~/.ssh/authorized_keys
2.3 在服务器上更改权限
$chmod 700 ~/.ssh $chmod 644 ~/.ssh/authorized_keys #如果是Red Hat 5.6的话,最好改成600,否则认为是不安全的~
解决本地登陆用户与远程登陆用户不一致
好吧,这事很纠结,虽然不用输入密码了,但是还得 ssh username@hostname 来登陆,很不爽,你懂的。 其实解决也很简单(but是同事告诉我的,老脸一红),修改本地登陆用户的 ~/.ssh/config 文件,如果木有的话就自个儿建一个吧,内容如下:
Host hostname user liluo
这样,本地和远程登陆用户名不一致也可以 ssh hostname 登陆了。