公钥认证权限被拒绝(publickey)

公钥认证权限被拒绝(publickey)

我正在尝试按照以下帖子在运行 Ubuntu 14.04 的服务器上设置公钥认证:SSH/OpenSSH/密钥。到目前为止我已经做了以下事情:

  1. 使用 在主机上生成 RSA 密钥ssh-keygen -t rsa

    密钥(id_rsaid_rsa.pub)现在存储在~/.ssh目录中。

  2. 使用以下方式将密钥复制到服务器ssh-copy-id <username>@<host>

  3. 编辑/etc/ssh/sshd_config文件以添加行PasswordAuthentication no

  4. 使用 重新启动 ssh /etc/init.d/ssh restart

现在,当我尝试从主机 ssh 到服务器时,我看到以下内容(我已编辑掉一些详细信息,例如服务器地址和主机名):

$:ssh -v 用户@域
OpenSSH_6.6.1,OpenSSL 1.0.1f 2014 年 1 月 6 日
debug1:读取配置数据/home/host/.ssh/config
debug1:读取配置数据 /etc/ssh/ssh_config
debug1:/etc/ssh/ssh_config 第 19 行:应用选项 *
debug1:连接到域 [192.168.xx.xx] 端口 22。
debug1:连接已建立。
debug1:身份文件/home/host/.ssh/id_rsa 类型1
debug1:身份文件/home/host/.ssh/id_rsa-cert 类型-1
debug1:身份文件/home/host/.ssh/id_dsa 类型 -1
debug1:身份文件/home/host/.ssh/id_dsa-cert 类型 -1
debug1:身份文件/home/host/.ssh/id_ecdsa 类型 -1
debug1:身份文件/home/host/.ssh/id_ecdsa-cert 类型 -1
debug1:身份文件/home/host/.ssh/id_ed25519 类型 -1
debug1:身份文件/home/host/.ssh/id_ed25519-cert 类型-1
debug1:启用协议 2.0 的兼容模式
debug1:本地版本字符串 SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8
debug1:远程协议版本2.0,远程软件版本OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8
调试1:匹配:OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8 pat OpenSSH_6.6.1* 兼容 0x04000000
debug1:SSH2_MSG_KEXINIT 已发送
debug1: 收到 SSH2_MSG_KEXINIT
debug1:kex:服务器->客户端aes128-ctr[电子邮件保护]没有任何
debug1:kex:客户端->服务器aes128-ctr[电子邮件保护]没有任何
debug1:发送 SSH2_MSG_KEX_ECDH_INIT
debug1:期待 SSH2_MSG_KEX_ECDH_REPLY
debug1:服务器主机密钥:ECDSA 16:00:b8:c5:89:af:e9:50:22:85:76:6d:65:1c:aa:b4
debug1:主机“域”已知并且与 ECDSA 主机密钥匹配。
debug1:在 /home/host/.ssh/known_hosts:2 中找到密钥
debug1:ssh_ecdsa_verify:签名正确
debug1: SSH2_MSG_NEWKEYS 已发送
debug1:期望 SSH2_MSG_NEWKEYS
debug1: 已收到 SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_SERVICE_REQUEST 已发送
debug1: 已收到 SSH2_MSG_SERVICE_ACCEPT
debug1:可以继续的认证:publickey
debug1:下一个认证方法:publickey
debug1:提供RSA公钥:/home/host/.ssh/id_rsa
debug1:可以继续的认证:publickey
debug1:尝试私钥:/home/host/.ssh/id_dsa
debug1:尝试私钥:/home/host/.ssh/id_ecdsa
debug1:尝试私钥:/home/host/.ssh/id_ed25519
debug1:没有更多可尝试的身份验证方法。
权限被拒绝(公钥)。

我一直关注这个案例:SSH 权限被拒绝(公钥)修复该问题并执行以下操作:

  1. 确保权限不会按照 OpenSSH 标准过于开放。

     chmod go-w ~/
     chmod 700 ~/.ssh
     chmod 600 ~/.ssh/authorized_keys
    
  2. 在主机中创建一个authorized_keys文件,然后将authorized_keys文件复制到服务器,然后根据需要更改所有权和权限。ssh-copy-id [email protected]

问题仍然存在。在尝试使用公钥身份验证之前,我能够使用密码成功 ssh 进入服务器。还有其他人遇到过类似的问题吗?

编辑 :

当我稍后尝试 ssh 时,输出中添加了一行新行:Agent admitted failure to sign using the key.。通过谷歌搜索找到了这篇文章:Ubuntu SSH 修复“代理承认使用密钥签名失败”问题。该问题称为 gnome-keyring 干扰。当我尝试时,SSH_AUTH_SOCK=0 ssh user@domain我能够使用公钥身份验证成功登录服务器。感谢大家的贡献。

答案1

当我尝试时,ssh -i ~/.ssh/key_name user@domain服务器响应说Agent admitted failure to sign using the key.。这显然是由于 gnome-keyring 干扰问题造成的,修复方法在本文中进行了讨论

一个临时的解决方法是尝试SSH_AUTH_SOCK=0 ssh user@domain,如果这样你就可以通过 ssh 进入你的服务器,然后按照上面链接中的步骤进行修复。

相关内容