场景:服务器B (192.168.1.101)免密登录A(192.168.1.100)服务器
1、登录服务器B
①生产公钥
ssh-keygen -t rsa Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again:
注意:1、在第二步的时候千万不要改名,采坑的教训;2、普通用户(非root),先切换到用以登录的用户
②上传公钥到服务器A
cd .ssh scp id_rsa.pub root@192.168.100.100:/root
2、登录服务器A(被免费登录服务器)
cd /root/.ssh cat ../id_rsa.pub >> authorized_keys
若为普通账号(非root),则目录为 /home/用户名/.ssh/authorized_keys,不存在目录或文件就先创建
3、免密登录多台服务器
在执行ssh-keygen -t rsa的时候如果不输入文件名,会替换掉id_rsa文件,即上一次通过该文件设置的密码登录将失效,要支持免密登录多台服务器需要生成秘钥的的时候指定新的文件名
然后在B服务器.ssh目录编辑文件:config,该文件没有扩展名,通过该文件来指定秘钥,如下
Host 172.16.4.220 HostName 172.16.4.220 IdentityFile ~/.ssh/id_rsa_robot User robot
host和hotsname都指定主机域名或ip地址
IdentityFile 指定密钥文件
User 指定登录的账号
4、如果ssh免密登录失败可以增加 -vvv参数查看登录日志
ssh 客户端日志:ssh user@ip -vvv
新启动一个带debug的ssh服务端:通过执行 /usr/sbin/sshd -d -p 2222 (在2222端口启动一个带debug输出的sshd,注意防火墙问题)
5、其它问题
Bad owner or permissions on .ssh/config的解决
当为本机配一个固定用户名远程登录某主机时,配置了一个config文件,但是在执行ssh免密码登录时报如下的错误:Bad owner or permissions on .ssh/config的解决。
经过查找资料发下解决办法如下:
sudo chmod 600 config
Authentication refused: bad ownership or modes错误解决方法
sshd为了安全,对属主的目录和文件权限有所要求。如果权限不对,则ssh的免密码登陆不生效。
用户目录权限为 755 或者 700,就是不能是77x。
.ssh目录权限一般为755或者700。
rsa_id.pub 及authorized_keys权限一般为644
rsa_id权限必须为600
解决方法
检测目录权限,把不符合要求的按要求设置权限即可。