在尝试SSH连接到服务器时,出现了 SSH Permission denied的错误

image-20220321102610481

括号中提示为公钥相关的问题,实际上,错误可能处在sshd_config这个配置文件,或是authorized_keys文件的权限不足(该文件包含允许通过SSH连接到服务器客户端的公钥列表,权限不足导致系统无法读取)。

方法一:修改sshd_config,以启动密码验证

使用编辑器打开ssh_config文件:

sudo vim /etc/ssh/sshd_config

找到PasswordAuthentication,修改为yes,以启动密码验证

找到ChallengeResponseAuthentication,修改为no

image-20220321103439096

保存并退出后,重启SSH服务:

sudo systemctl restart sshd

方法二:修改文件系统权限

在大多数情况下,出于安全考虑,我们并会是使用密码登录,因此会采用一下方法解决公钥认证的问题

使用编辑器打开ssh_config文件:

sudo vim /etc/ssh/sshd_config

确保PermitRootLogin,为no (如需要root登录,可以设置为yes)

PubkeyAuthentication,为yes

image-20220321103922531

通过在行首添加井号来注释掉与 GSSAPI 相关的选项:

#GSSAPIAuthentication yes

#GSSAPICleanupCredentials no

image-20220321104232843

确保该UsePAM,设置为yes

image-20220321104346359

保存并退出后,重启sshd服务:

sudo systemctl restart sshd

然后导航到主文件夹并检查权限:

cd ~
ls -ld

image-20220321104643883

如果所有者未设置为读取、写入和执行权限为drwx------

image-20220321105639728

需要使用chmod命令更改它们:

sudo chmod 0700 /home/ike

以确保具有所有者读取、写入和执行权限

同样的道理转到.ssh文件夹并检查权限

cd .ssh
cd -ld

image-20220321104943200

使用chmod命令修改权限:

sudo chmod 0700 /home/ike/.shh

以确保具有所有者读取、写入和执行权限

.ssh文件夹包含该authorized_keys文件。检查其权限:

ls -ld authorized_key

image-20220321105303873

使用chmod命令修改权限:

chmod 0600 /home/ike/.ssh/authorized_keys

最后尝试通过密钥登录,验证是否解决问题

该方法中,每次的chmod命令也可以使用777权限,就会和图中显示的权限相同,但是在出于安全考虑,在正式环境中并不推荐。