带有网关机器的授权密钥

带有网关机器的授权密钥

我正在尝试设置授权密钥,以便我可以无需密码登录到远程机器。

复杂的是,我必须先经过大学网关机器(机器 1)才能到达远程机器(机器 2)。

我已经在本地计算机上创建了授权密钥,并将公钥添加到 machine1 上的授权密钥列表中。这样就好了;我现在可以不用密码 ssh 进入 machine1。

我不清楚下一步该怎么做。我现在应该:

(a)需要在 machine1 上生成更多密钥并将它们添加到 machine2 上的 authorized_keys 中吗?或者(b)将我刚添加到 machine1 的相同公钥(来自我的本地机器)放到 machine2 中?

答案1

基本上,您可以同时做这两件事。

a) 更多按键

您可以继续创建密钥,machine1并将公钥复制到machine2文件中/home/yourusername/.ssh/authorized_keys

machine2如果您不决定采用下面的替代方案,我建议您使用这种方法。如果有人在上获得了您的私钥machine1,他仍然没有在您的客户端上拥有您的私钥machine1

b) 相同的密钥

您也可以将复制到 的公钥machine1放在 上machine2。在这种情况下,您还必须将私钥复制到 ,才能machine1成功地从 sshmachine1machine2

我不建议这样做,因为您的唯一私钥现在在远程系统上可用。

选择

c) 代理命令

将私钥私下保存在您的客户端上。仅将公钥复制到每台机器的/home/yourusername/.ssh/authorized_keys。在您的客户端上,设置/home/yourusername/.ssh/config(假设您在客户端上使用 Linux):

Host machine1
    HostName machine1.domain.tld
    Port 22   # or whichever port that is in your scenario
    User yourusername
    IdentityFile ~/.ssh/machine1privatekey

Host machine2
    HostName hostname   # resolves in the local network? If not, give its IP address here
    Port 22
    User yourusername
    IdentityFile ~/.ssh/machine1privatekey # the same as above
    ProxyCommand ssh -W machine2:22 machine1

在这种情况下,一个简单的操作ssh machine2就会通过 machine1 连接到 machine2,而无需先 ssh 到 machine1,然后手动 ssh 到 machine2。

额外的好处:您的私钥只需要放在您的客户端上,而不是远程系统上。

编辑:

d)SSH 代理转发

您可能可以将 和 的两个私钥都保留machine1machine2客户端上,然后使用 ssh 代理转发将machine1私钥从客户端转发到machine2。这被认为是有风险,我没有使用它,但它应该是这样的:

$ ssh-agent /bin/bash
$ ssh-add ~/.ssh/machine*privatekey
$ ssh -A -p 22 [email protected] 'ssh -p 22 yourusernameqmachine2'

相关内容