虽然一个简单的问题,我已经寻找了没有成功的日子。
M = My machine J = Jump Host S = Server Jump Host has my public key on authorized_keys. Server has J's public key on authorized_keys. Allowed connections (due to key authentication): M -> J J -> S
我怎么能从我的机器上进入S?
我目前的configuration是:
host jump user root HostName xxxx host server user root HostName xxxx port 22 ForwardAgent no ProxyCommand ssh jump -W %h:%p
它不会尝试用M的密钥login。
这是ssh日志
debug1: Host 'xxxx' is known and matches the ECDSA host key. debug1: Found key in /Users/xxxxx/.ssh/known_hosts:1542 ... debug1: Authentications that can continue: publickey debug1: Next authentication method: publickey debug1: Offering RSA public key: /Users/xxxxx/.ssh/id_rsa debug1: Authentications that can continue: publickey debug1: Trying private key: /Users/xxxxx/.ssh/id_dsa debug1: Trying private key: /Users/xxxxx/.ssh/id_ecdsa debug1: Trying private key: /Users/xxxxx/.ssh/id_ed25519 debug1: No more authentication methods to try. Permission denied (publickey). Killed by signal 1.
问题是它试图使用我的密钥(M)在S中进行身份validation,当它应该使用J的密钥。 我无法指定与IdentityFile一起使用的密钥,只能在J上使用,而不能在我的机器上使用。
那么这是你的问题。 跳转主机和最终目的地的连接直接从客户端在此设置中启动。 您的客户必须拥有两个系统的正确密钥。
代理命令中的ssh jump -W %h:%p为跳转主机启动一个ssh会话,但不会创build一个shell,它只是直接创build一个到目标主机的隧道。 然后你的客户做一个ssh到隧道。 在跳转主机上启动的shell并不会在这种types的设置中访问存储在中间主机上的任何密钥。 与转发乱七八糟什么也不做。 没有转发被用来启动连接。
您不会login到防火墙,这是限制数据包的networking设备。 在这种情况下基本上是不可见的。 它必须被configuration为允许你的数据包到达你的堡垒主机(jumphost)服务器,这是22端口,可能是高端的端口。
你直接login到服务器,所以需要configuration它来允许这个。 从同一networking上的另一台计算机进行testing。 从这个堡垒主机,您可以login到您的私有子网中保护的机器。
根据更多信息更新您不需要目标服务器中的堡垒/跳转主机密钥,您需要密钥。 这不是试图访问服务器的堡垒,它是一个用户,即你。
退后一步。 请确保您可以使用您的密钥从同一子网中的另一台服务器使用ssh访问目标服务器。 然后从堡垒主机尝试。