仅使用代理中的标识文件进行 SSH 代理跳转

仅使用代理中的标识文件进行 SSH 代理跳转

我在其他帖子中找不到我的具体案例。

基本上,我有我的 PC(ubuntu)、代理(Debian)和目标(Debian)。我想通过代理从 PC 到目标进行代理跳转。从代理到目标以及从 PC 到代理的身份验证使用公钥身份验证,每台机器都有自己的密钥对。

PC 中的私钥与代理中的 PC 公钥匹配,它们位于默认目录中。因此,我只需运行ssh user@proxy inPC,它就可以正常连接到代理。在代理中,我必须指定ssh -i mypubkey user@targetserver才能正常连接(它不是默认密钥)。

现在,从 PC 上,我不知道如何运行一个命令并最终到达目标,因为我必须在代理中指定私钥。我试过:

ssh -J user@proxy user@target
ssh -Ao ProxyCommand="ssh -W %h:%p user@proxy" user@target

但是它给了我错误“权限被拒绝(公钥)”。

在代理服务器中,我尝试添加 IdentityFile 指令,~/.ssh/config/etc/ssh/ssh_config显然当我从 PC 作为跳转主机调用代理时,它不会从这些文件中获取配置。

如果我将私钥从代理带到 PC 并指定-i例如,它就可以工作(即ssh -i mypubkey -J user@proxy user@target)。所以我的问题是:是否可以将私钥保留在代理中并在 PC 中引用它,这样我就不必将其移动到 PC 上?

答案1

[...] 是否可以将私钥保存在代理中并在 PC 中引用它,这样我就不必将其移动到 PC 了?

简短回答:否

原因:本地 PC 上的所有配置文件(或命令行)引用均指向本地设备(PC)上的文件。您无法从ssh可以访问的 PC 引用远程(代理)文件当时ssh正在尝试建立连接。

此外:你可能不想存储私钥代理到目标在代理上访问;如果这样做,则必须使用没有密码的密钥,这始终是一种不良的安全做法。通常,最好妥善保护您的私钥。就我而言,它们只存在于我的本地机器上,并且始终具有良好的密码。

建议的解决方法:您已经完成了设置,并使用代理到目标本地 PC 上的密钥。要么继续,要么使用 ssh-agent 和转发来提供无密码访问,我猜你想保留它。示例~/.ssh/config条目:

Host target
    ProxyJump  user@proxy
    IdentityFile .../target-id_rsa

Host proxy
    IdentityFile .../proxy-id_rsa
    ForwardAgent yes

IdentityFile如果您知道您已经将密钥加载到您当地的代理中,那么您可能不需要执行任何指令。

相关内容