一、目标
有两台机器
A主机(192.168.1.11)
B主机(192.168.1.22)
A主机需要免密登录B主机
二、生成秘钥
登录A主机
# 生成秘钥
ssh-keygen
# 一路回车后,会在/你的用户目录/.ssh/下生成两个文件
ll -a ~/.ssh/
id_rsa(私钥) id_rsa.pub(公钥)
三、上传公钥到B服务器
# root是B主机的用户名,然后还需要输入B主机的密码
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.22
正常情况下B主机主机中
/~/.ssh/ 目录下应该生成 authorized_keys
四、测试
# 在A主机中执行
ssh root@192.168.1.22
# 如果成功即可直接登录,否则需要输入密码
五、填坑
1、如果没有成功,可能是B主机中的/~/.ssh/目录权限不可写入
解决:chmod 755 ~/.ssh/authorized_keys
2、如果权限不可修改(Linux为了防止被误修改或删除)
防止关键文件被修改:
chattr +i authorized_keys
如果需要修改文件则:
chattr -i authorized_keys
3、也可以手动复制公钥到B主机中(~/.ssh/),但是一定要保证authorized_keys的权限是600(-rw-------)
B机器authorized_keys的路径,如果不是/root/.ssh/authorized_keys,则ssh root@192.168.1.11行不通的,要换对应的用户才能连接成功。