RSA 密钥仅适用于我的用户

RSA 密钥仅适用于我的用户

我的 ssh 密钥工作正常,我可以通过以下方式直接连接到其他服务器:

MyUser@host1:ssh 服务器

没有请求密码并且连接成功,但是当我使用 root 时:

root@host1: ssh -i /home/myuser/.ssh/id_rsa.pub MyUser@server

其他服务器请求密码,任何人都可以向我解释为什么连接不像第一种情况那样自动以及如何解决此问题?

先感谢您

答案1

我假设您以 MyUser 身份登录到 host1,然后使用su -sudo切换到 root。为了安全起见,从一个用户帐户转换到另一个用户帐户时,这两种方法都会删除大部分或全部环境变量。

(例如,如果只允许您以 root 身份使用 运行特定命令,则如果环境变量全部自动传递,sudo您可以通过邪恶LD_PRELOAD或变量设置来解决此限制。)LD_LIBRARY_PATH

当您使用 SSH 身份验证代理时,将为 host1 上的 SSH 会话创建一个重要的环境变量:SSH_AUTH_SOCK。当您以 MyUser 身份通过 SSH 继续连接到服务器时,此变量的存在会告知 host1 的 SSH 客户端身份验证代理连接可用。该变量指向一个 Unix 套接字,通常位于 /tmp 下的目录中,只有其所有者才能访问。此套接字连接到sshd处理从工作站到 host1 的连接的进程,并最终处理到工作站上的 PuTTY 身份验证代理。

su如果在从一个用户帐户向另一个用户帐户进行 ing 或ing时未传递此变量sudo,则 SSH 客户端在转换后将无法使用身份验证代理连接。因此,它需要提示输入密码才能自行解密任何可用的私钥。

此外,如果您转换到另一个非 root 帐户,套接字上的文件权限及其包含的目录将阻止您使用它,除非您在转换到其他用户之前采取措施明确允许它。 (转换为 root 时这不是问题,因为 root 可以访问所有内容。)

答案2

ssh -i /home/myuser/.ssh/id_rsa.pub MyUser@server

您在这里使用了错误的密钥文件。id_rsa.pub包含安装在远程服务器上的公钥。id_rsa(没有.pub扩展名)包含客户端用来向远程服务器进行身份验证的私钥。

指定私钥的名称而不是公钥的名称:

ssh -i /home/myuser/.ssh/id_rsa MyUser@server
                         ^^^^^^--Note no .pub

相关内容