我可以使用SSH密钥身份验证以其他用户名登录到远程系统吗?


17

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

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

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

我之所以这样问是因为我试图在这种情况下使密钥身份验证有效,但没有成功。我不确定是由于用户名不匹配还是由于远程系统上的SSH服务器配置问题引起的。


我启动了日志记录服务器端,事实证明这是远程用户主目录权限的问题。问题解决了!感谢所有提供答案的人。
马特·赫恩

Answers:


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服务器配置一定出了点问题,从而阻止了密钥身份验证完全起作用。
Matt Hurne,2009年

4
如果执行“ ssh -V foouser @ remotesystem”,则可以获取有关发生问题的信息。通常,这是〜/ .ssh的权限错误。
Paul Tomblin,2009年

4
不是-V(显示版本号)而是-vvv(最大详细程度)
Leven

10

还有一点,但是.....

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

Host remotesystem
    User baruser

这样,您无需记住在登录时指定用户名,并且以后在遇到密钥问题时也不必指定用户名。


5

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


3

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

ssh user @ machine -vvv

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

日志级别DEBUG3

您应该在/var/log/auth.log(或ssh配置为登录的任何位置)中找到调试输出。找到问题后,请记住将其重新设置为发现问题的方式。


2

两台计算机上的.ssh目录上的权限都是正确的。通常,这意味着.ssh目录上为700,主目录上最多为755。除了.ssh目录中的所有文件上的600。

如果远程系统上的用户是root用户,请确保root用户可以ssh。(sshd_config中的PermitRootLogin)和该公用密钥(PubkeyAuthentication)以及必要时启用RSA(RSAAuthentication)。


RSAAuthentication不是一种完全独立的方法吗?
user1686 2009年

RSA是SSH支持的公钥算法之一(与DSA一起)。它是SSH1中唯一的方法。
2009年

2

如果启用了SE Linux,则还需要执行以下操作。

将SELinux标签添加到,authorized_keys以便sshd可以访问它。

semanage fcontext -a -t sshd_key_t ~foo/.ssh/authorized_keys
restorecon -Rv ~user/.ssh

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.