问题现象
使用第三方SSH客户端远程连接 Linux 实例时,账号和密码正确,但连接被拒绝,并返回以下任一类似错误信息:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic) #错误信息 1: 尝试的认证方法均被服务器拒绝。
No supported authentication methods available (server sent: publickey,gssapi-keyex,gssapi-with-mic) #错误信息 2:未能找到共同支持的认证方法。
Connection closed by XX.XX.XX.XX # 错误信息 3: 服务器在认证阶段主动关闭了连接。解决方案
场景一:密码登录失败
登录ECS实例。
访问ECS控制台-实例。在页面左侧顶部,选择目标资源所在的资源组和地域。
进入目标实例详情页,单击远程连接,选择通过VNC远程连接。输入账号和密码,登录ECS实例。
启用密码认证。
编辑SSH配置文件。确保
PasswordAuthentication参数的值为yes。如果该行被注释,请先移除行首的#符号。sudo vim /etc/ssh/sshd_config重启SSH服务,使配置生效。
Alibaba Cloud Linux、CentOS类型。
sudo systemctl restart sshd.serviceDebian、Ubuntu类型。
sudo systemctl restart ssh.service
问题验证。
在第三方SSH客户端再次使用密码远程连接Linux实例,验证问题是否解决。
场景二:密钥登录失败
登录ECS实例。
访问ECS控制台-实例。在页面左侧顶部,选择目标资源所在的资源组和地域。
进入目标实例详情页,单击远程连接,选择通过Workbench远程连接。根据页面提示登录,进入终端页面。
修改SSH文件,允许密钥方式登录。
编辑SSH配置文件。
sudo vim /etc/ssh/sshd_config在编辑模式下,找到
PubkeyAuthentication参数。若其值为
no或该行被#注释,表示禁止密钥方式登录。需删除#并修改为yes后,保存并退出文件。若其值为
yes,需复制公钥到用户authorized_keys文件。
复制公钥到用户
authorized_keys文件。root用户
编辑
authorized_keys文件。sudo vim /root/.ssh/authorized_keys将公钥内容粘贴到文件中,每个公钥占一行。配置完成后保存并关闭文件。
设置文件权限。
错误的权限会导致 SSH 登录失败。
sudo chmod 700 /root/.ssh sudo chmod 600 /root/.ssh/authorized_keys
非root用户
命令中
<username>替换为待使用公钥登录的用户名。编辑
authorized_keys文件。sudo vim /home/<username>/.ssh/authorized_keys将公钥内容粘贴到文件中,每个公钥占一行。配置完成后保存并关闭文件。
设置文件权限。
错误的权限会导致 SSH 登录失败。
sudo chown -R <username>:<username> /home/<username>/.ssh sudo chmod 700 /home/<username>/.ssh sudo chmod 600 /home/<username>/.ssh/authorized_keys
重启SSH服务,使配置生效。
Alibaba Cloud Linux、CentOS类型。
sudo systemctl restart sshd.serviceDebian、Ubuntu类型。
sudo systemctl restart ssh.service
问题验证。
在第三方SSH客户端再次使用密钥远程连接Linux实例,验证问题是否解决。