描述:在创建密钥对和发送公钥到远程主机后,再次连接仍然需要密码

排查:

1.权限问题:

请确保该目录的所有者是openapi用户,组是openapi组,权限设置为drwxr-xr-x(即755)

检查用户(openapi)家目录的权限和所有权:

ls -ld /home/openapi

请确保该目录的所有者是openapi用户,组是openapi组,权限设置为drwxr-xr-x(即755)

如果权限设置不正确,请使用以下命令更改:

sudo chown openapi:openapi /home/openapi
sudo chmod 755 /home/openapi

请确保authorized_keys文件和其父目录的权限设置正确,应该是只有该用户才能读写,其他用户没有权限。可以使用以下命令设置权限

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

2.SELinux问题:

如果您的服务器启用了SELinux,请确保authorized_keys文件的安全上下文设置正确。可以直接关闭selinux或者使用以下命令设置安全上下文

关闭:

setenfoce 0

设置安全上下文

restorecon -Rv ~/.ssh

3.SSH配置问题

请检查远程服务器的SSH配置文件(通常为/etc/ssh/sshd_config)是否启用了公钥身份验证。请确保以下行未被注释:

PubkeyAuthentication yes

修改配置后需要重启sshd服务

systemctl restart sshd

4.检查用户(openapi)家目录的权限和所有权

ls -ld /home/openapi

请确保该目录的所有者是openapi用户,组是openapi组,权限设置为drwxr-xr-x(即755)

如果权限设置不正确,请使用以下命令更改:

sudo chown openapi:openapi /home/openapi
sudo chmod 755 /home/openapi

5.以上都没有解决问题,请查看日志文件

仍然无法免密登录,请检查日志文件(通常为/var/log/auth.log或/var/log/secure)以获取更多详细信息。