为什么“ssh user@machine1”不需要密码,而“ssh root@machine2”需要?

为什么“ssh user@machine1”不需要密码,而“ssh root@machine2”需要?

这是我研究的一个 DigitalOcean 登录问题在 DigitalOcean 官方网站支持网站上看到这个问题后我最初申请时遭到了拒绝:

ssh root@$IP_DO

从上面的链接,我首先将其范围缩小到:

ssh -o "IdentitiesOnly yes" -i ~/.ssh/id_rsa root@$IP_DO

当我执行上述操作时,系统要求输入密码。我打开密码管理器,果然,我已经为该密钥设置了密码。输入密码,我就可以进入了。

(如果有关系的话,我在设置我的 Digital Ocean 帐户时输入了公钥,并选择它来创建我的 droplet)。

有点ssh-add ~/.ssh/id_rsa,输入一次密码,现在 DigitalOcean 不再要求我输入密码了。

但是,即使在我执行上述 ssh-add 之前,我始终可以 ssh 进入 LAN 上服务器上的 Virtualbox VM,没有问题。顺便说一下,这些是 bitnami VM。

在这两种情况下,DigitalO cean 和 VM 都~/.ssh/authorized_keys显示相同的内容:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC35MyHYQPWgHgxOffs2oI4jAJCTSldYr1tMb/LMogbTXtQW35mSsWexiwYjPIcdkkOl2Zqrt43696U1oZco90ibkFrbbXrqDGZssbaqfqk7

看看/etc/ssh/sshd_config

DigitalOcean:

egrep 'Authentication|PAM|Pass' /etc/ssh/sshd_config | grep -v '^#
RSAAuthentication yes
PubkeyAuthentication yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM yes

uname -rv
4.4.0-93-generic #116-Ubuntu SMP Fri Aug 11 21:17:51 UTC 2017

Bitnami 虚拟机

egrep 'Authentication|PAM|Pass' /etc/ssh/sshd_config | grep -v '^#'
RSAAuthentication yes
PubkeyAuthentication yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
UsePAM yes

uname -rv
3.16.0-4-amd64 #1 SMP Debian 3.16.43-2+deb8u2 (2017-06-26)

现在,进一步阅读该线程,它建议运行ssh-add ~/.ssh/id_rsa。要求输入密钥的密码。

现在,DigitalOcean 和 VM 都无需密码即可工作,但我很好奇为什么 VM 不需要密码而 DigitalOcean 需要?

答案1

好的,我已经解决了,并且我很确定我知道发生了什么。

SSL 将尝试存储在授权密钥与使用质询系统的本地密钥相比。您实际上并不知道或控制其尝试的顺序。

machine1(VM)根目录~/.ssh/authorized_keys指向我的一个未受密码保护的密钥,例如github。它还id_rsa,但从来没有问过,因为它在id_rsa, 使用github

machine2(Digitalocean)根目录~/.ssh/authorized_keys没有包含对我未受保护的github身份密钥,因此最终id_rsa。 因为id_rsa的身份尚未加载到 ssh-agent 中,并且由于它受密码保护,所以我被要求输入密码。

请注意,这与我所说的授权密钥相同相矛盾。id_rsa 的条目在两个文件中都有,但 Bitnami VM 上还有其他公钥。

相关内容