# 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文件

  1. 直接用工具 ssh-copy-id -i /root/.ssh/id_rsa.pub root@18.19.129.19

  2. 使用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

# 重启sshd服务器

service sshd restart

就可以ssh app@18.19.129.19登录这个远程机器了。。