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 密钥之后,也总是要求输入密码

Gitlab部署密钥已配置但仍不授予访问权限

为啥 ssh 不要求时 git 要求输入密钥密码?

使用 ssh 登录的 azure dsvm 设置的 Jupyterhub 密码

SSH 密钥要求在启动代理后输入密码

现在在 Github 中删除我的 SSH 密钥是不是需要我输入用户名和密码?