![ssh 堡垒主机代理命令](https://linux22.com/image/63022/ssh%20%E5%A0%A1%E5%9E%92%E4%B8%BB%E6%9C%BA%E4%BB%A3%E7%90%86%E5%91%BD%E4%BB%A4.png)
这是一种奇怪的情况,即相同的命令在直接在 shell 中输入时有效,但在 ssh 配置文件中的 ProxyCommand 中则无效。
所以这有效:
$ ssh -A -R 40022:git.some.pt:22 -t -t [email protected] ssh -t -t -R 40022:localhost:40022 [email protected]
但这并没有:
在~/.ssh/config中
Host destination
ProxyCommand ssh -A -R 40022:git.some.pt:22 -t -t [email protected] ssh -t -t -R 40022:localhost:40022 [email protected]
$ ssh destination
Bad packet length 218783296.
Disconnecting: Packet corrupt
有什么想法吗?
答案1
您需要允许命令行ssh
连接到某个地方的 ssh 服务器。您现有的ProxyCommand
并不能做到这一点 - 它提供了登录某处的所有方法,并且您的初始ssh
.
这似乎对我来说相当有效,而且我认为我的链是正确的(显然我更难使用与您使用的相同主机名进行测试)。但请注意,它确实使用nc
而不是ssh
在堡垒主机上:
Host destination.net
User user
ProxyCommand ssh -A [email protected] nc %h %p
ForwardAgent yes
RemoteForward 40022 git.some.pt:22
我也一直在考虑在(而不是)/usr/sbin/sshd -i
的末尾运行,正如建议的那样ssh -p %p user@%h
nc %h %p
人 ssh_config,但我无法让它发挥作用。也许你会有更多的运气。