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

Mat*_*att 18 linux solaris ssh authentication

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

我知道在我的本地系统上,我可以作为本地用户“foouser”生成一个 SSH 密钥对,将公钥放在“远程系统”上的“/home/foouser/.ssh/authorized_keys”文件中。当我以“foouser”身份从本地系统 SSH 到“远程系统”时,SSH 使用密钥对来验证我的身份。

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

我问是因为我试图让密钥身份验证在这种情况下工作,但没有成功。我不确定是因为用户名不匹配,还是远程系统上的 SSH 服务器配置问题。

use*_*686 11

是的,你可以这样做,就像你描述的那样。

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 ~$

  • 如果您执行“ssh -V foouser@remotesystem”,您可以获得有关发生了什么问题的一些信息。通常是 ~/.ssh 上的权限错误。 (4认同)
  • 不是 -V(显示版本号)而是 -vvv(最大详细程度) (4认同)

小智 10

有点偏题,但是......

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

Host remotesystem
    User baruser
Run Code Online (Sandbox Code Playgroud)

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


Sör*_*lau 5

您的本地用户名并不重要(除了必须驻留在本地用户主目录中的私钥)。只需将密钥复制到远程用户的authorized_keys部分,它就会起作用。