我可以使用 SSH 密钥验证以不同的用户名登录远程系统吗?

我可以使用 SSH 密钥验证以不同的用户名登录远程系统吗?

假设我有一个名为“remotesystem”的远程系统,以及该系统上的用户帐户“foouser”。

我知道在我的本地系统上,我可以以本地用户“foouser”的身份生成 SSH 密钥对,将公钥放在“remotesystem”上的“/home/foouser/.ssh/authorized_keys”文件中。当我以“foouser”的身份从本地系统通过 SSH 连接到“remotesystem”时,SSH 使用密钥对对我进行身份验证。

但是,如果我的本地用户名与远程系统上的用户名不同怎么办?也就是说,如果我想以本地用户“baruser”的身份通过 SSH 连接到“remotesystem”,该怎么办?显然,我需要为“baruser”生成一个密钥对,并将公钥添加到“/home/foouser/.ssh/authorized_keys”。然后,我应该能够在本地以“baruser”身份登录时“ssh foouser@remotesystem”,SSH 将使用密钥对进行身份验证,对吗?

我之所以问这个问题,是因为我想让密钥认证在这种情况下正常工作,但没有成功。我不确定这是由于用户名不匹配,还是远程系统上的 SSH 服务器的配置问题。

答案1

是的,您可以这样做,正如您所描述的那样。

baruser@here ~$ ssh-add -l
4096 10:b3:fd:29:08:86:24:a6:da:0a:dd:c6:1e:b0:66:6a id_rsa (RSA)
baruser@here ~$ ssh foouser@remotesystem
motd 消息等等
foouser@remotesystem ~$

答案2

这有点题外,但是......

如果你总是对远程服务器使用相同的用户名,你可能还会发现在 ssh 配置中添加主机很有用:

Host remotesystem
    User baruser

这样,您就不需要记住在登录时指定用户名,并且将来在遇到密钥问题时也可以排除这一点。

答案3

您的本地用户名实际上并不重要(除了私钥必须位于本地用户的主目录中)。只需将密钥复制到远程用户的authorized_keys部分即可。

答案4

对于任何与 ssh 相关的问题,首先要做的就是提高客户端详细程度:

ssh 用户@机器-vvv

如果这不能让您了解问题所在,则需要更改服务器上的日志级别并重新启动守护程序。

日志级别 DEBUG3

您应该在 /var/log/auth.log(或配置 ssh 进行登录的任何位置)中找到调试输出。一旦找到问题,请记住将其设置回您发现问题时的状态。

相关内容