SSH 密钥设置但仍要求输入密码(但不是用于第二、第三等会话)
Posted
技术标签:
【中文标题】SSH 密钥设置但仍要求输入密码(但不是用于第二、第三等会话)【英文标题】:SSH keys setup but still asking for password (but not for 2nd, 3rd, etc. sessions) 【发布时间】:2014-07-17 04:59:05 【问题描述】:目标服务器是相对干净的 Ubuntu 14.04 安装。我使用ssh-keygen
生成了一个新的ssh 密钥,并使用ssh-copy-id
将它添加到我的服务器。我还检查了公钥是否在服务器上的~/.ssh/authorized_keys
文件中。
即使如此,每次我尝试 ssh
进入服务器时,都会提示我输入密码。
然而,我注意到了一些奇怪的事情。在我使用密码登录第一个会话后,下一个并发会话不会要求输入密码。他们似乎正确地使用了ssh
键。我在两个不同的客户端 (Mint OSX) 上注意到了这种行为。
【问题讨论】:
在命令中使用 ssh-copy-id 和 sudo 是我的错误。试试看。并做第一原则。从头开始!!! 【参考方案1】:您确定您的 SSH 密钥不受密码保护吗?请尝试以下操作:
How do I remove the passphrase for the SSH key without having to create a new key?
如果不是这样,可能只是 ssh
无法找到您的私钥。尝试使用-i
标志明确指出其位置。
ssh -i /path/to/private_key username@yourhost.com
【讨论】:
ssh 密钥是使用 ssh-keygen 生成的,没有密码。 该命令仍然产生同样的问题。问题肯定出在目标服务器上,因为我对其他服务器没有任何问题。 我发现了问题所在。我在服务器上的主目录是加密的。我发现这很有帮助article。【参考方案2】:感谢 Samuel Jun 提供help.ubuntu.com - SSH Public Key Login Troubleshooting 的链接!
请注意:
如果您将授权密钥文件复制到加密主目录之外,请确保您的根安装也已加密(imho Ubuntu 仍然允许未加密的根安装以及主目录加密)。
否则,这首先会破坏使用加密的全部目的;)
【讨论】:
【参考方案3】:如果您在 Windows 上遇到这种情况(我使用的是 Windows 10)
尝试以管理员身份运行您尝试通过 ssh 连接到服务器的程序。
对我来说,我使用带有 scoop 的 powershell 来安装一些东西,这样我就可以直接从中进行 ssh。无论如何...我以管理员身份运行 PowerShell 并尝试再次连接,但它没有询问我的密码。
【讨论】:
【参考方案4】:对于 LinuxSE
使用
检查 SE 上下文% ls -dZ ~user/.ssh
必须包含 unconfined_u:object_r:ssh_home_t:s0
如果不是,那就是问题所在,以 root 身份运行
# for i in ~user/.ssh ~user/.ssh/*
do
semanage fcontext -a -t ssh_home_t $i
done
# restorecon -v -R ~user/.ssh
【讨论】:
【参考方案5】:看起来它与您的主目录上的加密有关,因此无法读取 authorized_keys 文件。
https://unix.stackexchange.com/a/238570
【讨论】:
您能否在答案中包含更多信息,使其独立(即,不依赖链接)。【参考方案6】:确保您的 ssh 公钥以正确的格式复制到远程主机。如果您打开密钥文件进行编辑,它应该读取 1 行。 基本上,只需执行 ssh-copy-id username@remote。它会处理剩下的事情。
【讨论】:
以上是关于SSH 密钥设置但仍要求输入密码(但不是用于第二、第三等会话)的主要内容,如果未能解决你的问题,请参考以下文章
Bitbucket 上的 Git:即使在上传了我的公共 SSH 密钥之后,也总是要求输入密码