使用第三方SSH客户端远程连接Linux实例时, 提示“No supported authentication methods available (server sent: publickey, gssapi-keyex, gssapi-with-mic)”错误怎么办?

本文介绍使用第三方SSH客户端远程连接Linux实例时,提示“No supported authentication methods available (server sent: publickey,gssapi-keyex,gssapi-with-mic)”错误的问题原因和解决方案。

问题现象

当您使用第三方SSH客户端远程连接Linux系统的ECS实例时,输入了正确的账号和密码,但是还是出现类似以下错误信息。

Permission denied (publickey,gssapi-keyex,gssapi-with-mic)
sshd[10826]: Connection closed by XX.XX.XX.XX
No supported authentication methods available (server sent: publickey,gssapi-keyex,gssapi-with-mic)

putty fatal error

问题原因

使用密码或密钥登录都可能出现该问题,具体说明如下:

  • 使用密码登录出现该问题:可能是ECS实例内禁止用户使用密码方式连接,您可以将PasswordAuthentication参数值修改为yes以解决此问题。具体操作,请参见方案一:允许使用密码方式登录

  • 使用密钥登录出现该问题:可能是ECS实例内禁止了密钥登录或SSH密钥对的公钥未加入对应用户.ssh/authorized_keys中,您可以检查/etc/ssh/sshd_config文件或重新上传公钥到authorized_keys文件中以解决此问题。具体操作,请参见方案二:复制公钥到authorized_keys文件

方案一:允许使用密码方式登录

  1. 以VNC方式登录ECS实例。

    具体操作,请参见通过密码认证登录Linux实例

  2. 查看/etc/ssh/sshd_config的参数PasswordAuthentication配置是否有误。

    sudo cat /etc/ssh/sshd_config

    如下图所示,PasswordAuthentication参数设置为no,表示禁止以密码方式登录,需要修改为yes

    image

  3. PasswordAuthentication no修改为PasswordAuthentication yes

    1. 打开SSH配置文件。

      sudo vim /etc/ssh/sshd_config
    2. PasswordAuthentication no修改为PasswordAuthentication yes

      image

    3. 按Esc键,输入:wq保存修改。

  4. 执行如下命令,重启SSH服务。

    sudo systemctl restart sshd.service
  5. 重新远程连接Linux实例,如果可以正常连接,说明问题已解决。

方案二:复制公钥到authorized_keys文件

  1. 以VNC方式登录ECS实例。

    具体操作,请参见通过密码认证登录Linux实例

  2. 查看/etc/ssh/sshd_config的参数PubkeyAuthentication配置是否有误。

    sudo cat /etc/ssh/sshd_config
    • PubkeyAuthentication参数为yes时,说明可能是SSH密钥对的公钥未加入对应用户.ssh/authorized_keys中,请执行步骤4

    • PubkeyAuthentication参数为no,表示禁止以密钥方式登录,需要修改为yes。请执行步骤3

      image

  3. PubkeyAuthentication no修改为PubkeyAuthentication yes

    1. 打开SSH配置文件。

      sudo vim /etc/ssh/sshd_config
    2. PubkeyAuthentication no修改为PubkeyAuthentication yes

      image

    3. 按Esc键,输入:wq保存修改。

    4. 执行如下命令,重启SSH服务。

      sudo systemctl restart sshd.service
  4. 复制公钥到authorized_keys文件。

    1. 执行如下命令,打开authorized_keys文件。

      sudo vim /home/user/.ssh/authorized_keys
      说明

      /home/user请替换成实际的用户。

    2. i键进入编辑模式。

    3. 将本地保存的公钥粘贴到authorized_keys文件中。

    4. Esc键,输入:wq退出编辑模式。

  5. 重新远程连接Linux实例,如果可以正常连接,说明问题已解决。