2台linux ssh免密登录
作者:bin使用场景:在编写shell脚本时候,经常会遇到将文件传输至另一个服务器,并且使用文件。
使用ssh免密登录优点在于,不用每次都主动去输入密码
一、生成公匙、私匙
cd ~/.ssh ssh-keygen //这条命令会有3次输入,直接回车即可
这样,在~/.ssh/目录下就生成了id_rsa和id_rsa.pub。
id_rsa:是私钥,当前机器用; id_rsa.pub:是公钥,其他机器用;
二、拷贝密匙至目标服务器
这里可以理解为:
要登录qq,要做的是将”账号密码”给qq(设置账号密码),然后使用”账号密码”进行登陆qq.
这里的id_rsa就是”账号密码”,只要把id_rsa.pub给想登录目标服务器,id_rsa与id_rsa.pub匹配,就可以免密登录了.
scp ~./.ssh/id_rsa.pub root@172.20.0.141:/root/.ssh
这里使用root作为例子,也可以使用特定账户
三、将客户端公钥内容复制进authorized_keys文件中
ssh root@172.20.0.141 //此时还要输入密码 cd ~./ssh cat id_rsa.pub >> authorized_keys
四、免密登录
exit //退出远程主机 ssh root@172.20.0.141 //再使用这条命令不需要输入密码了
五、可能会遇到的问题
上面的过程完整的做完了,但是ssh root@172.20.0.141,依然需要输入密码
此时可以使用ssh的客户端调试方法进行调试
输入命令
ssh -vvv root@172.20.0.141
在结果中找到
debug2: we sent a publickey packet, wait for reply debug3: Wrote 368 bytes for a total of 1645 debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password debug1: Trying private key: /root/.ssh/id_dsa debug3: no such identity: /root/.ssh/id_dsa debug1: Trying private key: /root/.ssh/id_ecdsa debug3: no such identity: /root/.ssh/id_ecdsa debug2: we did not send a packet, disable method debug3: authmethod_lookup password
结果可以明显看到,尝试使用private key去登录,但是失败了,进而使用密码登录
遇到这个问题,请检查一下2点,
1、文件权限
目标服务器的
~ 目录是否权限是0755,即drwxr-xr-x
~./ssh 目录权限是0700,即drwx——
~./ssh/authorized_keys 权限是0600,即-rw——-
2、检查配置文件
目标服务器的sshd_config , 查看以下内容是否正确
vim /etc/ssh/sshd_config RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys