# centos7免密登陆设置
# 原理
免密登陆就是把当前机器的~/.ssh下面的公钥id_rsa.pub 复制到要远程的机器上存入~/.ssh/authorized_keys文件。
主要是用非对称加密,ssh的远程机器时,远程机器会查看自己authorized_keys中是否保存有请求机器的公钥,有就可以说明值得信任。
# 当前机器生成密钥对
ssh-keygen -t rsa 一路回车键即可, 会生成用户目录/root/.ssh/id_rsa.pub和/root/.ssh/id_rsa俩文件
# 复制公钥id_rsa.pub到目标机器
将当前机器的id_rsa.pub 追加到远程机器的authorized_keys文件
直接用工具 ssh-copy-id -i /root/.ssh/id_rsa.pub root@18.19.129.19
使用scp工具 scp -p /root/.ssh/id_rsa.pub root@18.19.129.19:/root/.ssh/authorized_keys
需要注意的点:
ssh-copy-id 默认时用哪个用户链接, 就复制到哪个用户下例如 test@18.19.129.19。 复制到/home/test/.ssh/authorized_keys
ssh-copy-id 默认会设置/home/test/.ssh目录权限为700, /home/test/.ssh/authorized_keys权限为600, 这个ssh要求很严格。
如果scp上传,需要直接修改权限:
chmod 700 /home/test/.ssh
chmod 600 /home/test/.ssh/authorized_keys
测试中的问题:
如果你的用户名,比如是app,虽然不是root,但是权限时root, 也就是登录后终端是#结尾,这个在centos8可以修改/etc/passwd实现
就只能使用scp方式上传到/root/.ssh/authorized_keys中,使用app@ip登录就写进/home/app/.ssh/authorized_keys中
因为登录是root权限用户app,所以会使用/root/.ssh/authorized_keys文件验证。
# 修改远程机器sshd_config文件
vim /etc/ssh/sshd_config
PasswordAuthentication yes #这个默认值就是yes,使用密码登录
PubkeyAuthentication yes # 可以使用公钥认证
AuthorizedKeysFile /root/.ssh/authorized_keys # 指定用户认证key文件
1
2
3
2
3
# 重启sshd服务器
service sshd restart
就可以ssh app@18.19.129.19登录这个远程机器了。。