在部署环境过程中发现linux服务器之间的通信总是需要密码,解决问题的办法是在目标机器的authorized_keys里配置自己机器的公钥,当目标机器找到这个公钥后,访问就不需要密码了。
源机器可能需要的操作:
# 如果机器尚未生成公钥,先运行命令生成
ssh-keygen -t rsa -C comment
#执行完上面的命令,在.ssh目录下会生成两个文件:id_rsa id_rsa.pub
-rw------- 1 root root 1675 Jan 4 14:42 id_rsa
-rw-r--r-- 1 root root 394 Jan 4 14:42 id_rsa.pub
# 读取公钥
cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxn6laEjJvDaG7YAoQ9Ulm3eicMwzp80b7ose+k/kUTdUsxlPQG3g7vjMJOjBX6YQbeyE541lsdY8CR59ay4SGYNo0AT/RMI9byTQctGwdECvxW4LdZdT7nXugLACahUqYvlI/XlMPBIDwmhOMjCHRMGJ2Ak7x4aWbeSpWtjR5H0bHO25I9JouU8WNRqn95IIJc+onf6a5tlVUoGK+XZWrOz7RKPuUuXwJ/0KXpoWlq+i7pPUL5Gpz4cEE7g7WNkpIU/zMMXMh/T+9X0f+04/5IhLZmA7sFky3+WxpYoWtEfckZ8oGz4BlurTYdIIMxwfO/I9rlgNTeclZZSCbXw== comment
目标机器可能操作:
# 如果之前没有配置过公钥证书,那么authorized_keys文件可能是不存在的,先创建一个
touch authorized_keys
# 在sshd_config里可以看到公钥证书管理文件的路径
vim /etc/ssh/sshd_config
/AuthorizedKeysFile .ssh/authorized_keys
# 配置authorized_keys,把原机器的公钥写配置
cd /root/.ssh
vim authorized_keys
在配置完成后,再次访问目标机器,不再需要密码。
如果配置完成后仍然不能访问,可以排查一下authorized_keys的访问权限:
# 查看.ssh目录和authorized_keys文件的访问权限
drwx------. 2 root root 4096 1月 4 19:33 .ssh
-rw------- 1 root root 2999 1月 4 15:03 authorized_keys
一般来说,.ssh目录的权限必须是700,而authorized_keys文件权限必须是600,但是已经我的服务器上文件的访问权限满足上述要求,还是不能访问,于是再次修改:
# .ssh目录的权限不变=700,authorized_keys文件的权限修改为644
chmod 644 ~/.ssh/authorized_keys
drwx------. 2 root root 4096 1月 4 19:33 .ssh
-rw-r--r-- 1 root root 2999 1月 4 15:05 authorized_keys
#需要注意的是,只能是root用户可以写authorized_keys,其他用户不可以开放写的权限,不然可能报错
修改完成后,再次访问目标机器,不再需要密码。
网友评论