![公钥认证权限被拒绝(publickey)](https://linux22.com/image/1090875/%E5%85%AC%E9%92%A5%E8%AE%A4%E8%AF%81%E6%9D%83%E9%99%90%E8%A2%AB%E6%8B%92%E7%BB%9D%EF%BC%88publickey%EF%BC%89.png)
我正在尝试按照以下帖子在运行 Ubuntu 14.04 的服务器上设置公钥认证:SSH/OpenSSH/密钥。到目前为止我已经做了以下事情:
使用 在主机上生成 RSA 密钥
ssh-keygen -t rsa
。密钥(
id_rsa
和id_rsa.pub
)现在存储在~/.ssh
目录中。使用以下方式将密钥复制到服务器
ssh-copy-id <username>@<host>
编辑
/etc/ssh/sshd_config
文件以添加行PasswordAuthentication no
。使用 重新启动 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 权限被拒绝(公钥)修复该问题并执行以下操作:
确保权限不会按照 OpenSSH 标准过于开放。
chmod go-w ~/ chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
在主机中创建一个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 进入你的服务器,然后按照上面链接中的步骤进行修复。