假设我有一个名为“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 进行登录的任何位置)中找到调试输出。一旦找到问题,请记住将其设置回您发现问题时的状态。