1、准备工做:
一、确认本机sshd的配置文件(须要root权限)
shell
#vim /etc/ssh/sshd_config
找到如下内容,并去掉注释符”#“
vim
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys #关闭密码登录 PasswordAuthentication no
二、若是修改了配置文件须要重启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 导入本机
ssh
$cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
2.2 导入要免密码登陆的服务器
首先将公钥复制到服务器
测试
$scp ~/.ssh/id_rsa.pub xxx@host:/home/id_rsa.pub
而后,将公钥导入到认证文件(这一步的操做在服务器上进行)
rest
$cat /home/id_rsa.pub >> ~/.ssh/authorized_keys
2.3 在服务器上更改权限
code
$chmod 700 ~/.ssh $chmod 644 ~/.ssh/authorized_keys #若是是Red Hat 5.6的话,最好改为600,不然认为是不安全的~
解决本地登录用户与远程登录用户不一致io
好吧,这事很纠结,虽然不用输入密码了,可是还得 ssh username@hostname 来登录,很不爽,你懂的。 其实解决也很简单(but是同事告诉个人,老脸一红),修改本地登录用户的 ~/.ssh/config 文件,若是木有的话就自个儿建一个吧,内容以下:class
Host hostname user liluo
这样,本地和远程登录用户名不一致也能够 ssh hostname 登录了。