假设我有一个名为“远程系统”的远程系统,并在该系统上有一个用户帐户“foouser”。
我知道在我的本地系统上,我可以生成一个SSH密钥对作为本地用户“foouser”,把公钥放在“远程系统”的“/home/foouser/.ssh/authorized_keys”文件中。 当我从本地系统SSH“foouser”到“远程系统”,SSH使用密钥对来validation我。
但是,如果我的本地用户名与远程系统上的用户名不一样呢? 也就是说,如果我想SSH作为本地用户“baruser”到“远程系统”? 显然,我需要为“baruser”生成密钥对,并将公钥添加到“/home/foouser/.ssh/authorized_keys”。 然后,我应该可以在本地以“baruser”身份login时使用“ssh foouser @ remotesystem”,SSH将使用密钥对进行身份validation,对吧?
我问,因为我正在尝试在这种情况下获得密钥身份validation,没有成功。 我不确定是由于用户名不匹配还是远程系统上的SSH服务器的configuration问题。
是的,你可以这样做,就像你描述的一样。
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〜$
这有一点点,但…..
如果你总是对远程服务器使用相同的用户名,你也可能会发现将主机添加到你的sshconfiguration中是很有用的:
Host remotesystem User baruser
这样你就不需要记住在login时指定用户名,而且在你以后遇到密钥问题的时候就可以排除这个问题。
您的本地用户名并不重要(除了私钥必须驻留在本地用户的主目录中)。 只需将该密钥复制到远程用户的authorized_keys部分即可使用。
对于任何与SSH相关的问题,首先要做的事情就是调整客户端的详细程度:
ssh user @ machine -vvv
如果这不能告诉你什么是错误的,你需要改变服务器上的日志级别并重启守护进程。
LogLevel DEBUG3
你应该在/var/log/auth.log中finddebugging输出(或者是configurationsshlogin的地方)。 一旦发现问题,请记住将其设置回如何find它。
如果您启用了SE Linux,则还需要执行以下操作。
将SELinux标签添加到authorized_keys以便可以通过sshd访问。
semanage fcontext -a -t sshd_key_t ~foo/.ssh/authorized_keys restorecon -Rv ~user/.ssh
两台机器上的.ssh目录的许可权都是正确的。 一般来说,这意味着.ssh目录中的700和主目录中的最多755个。 除.ssh目录中的所有文件外还有600个。
如果远程系统上的用户是root,请确保root可以ssh。 (sshd_config中的PermitRootLogin)以及该公钥(PubkeyAuthentication)和必要的RSA(RSAAuthentication)都已启用。
听起来像你正在做的事情,但确保在authorized_keys权限是正确的。 他们应该设置为600。