【发布时间】:2015-09-19 17:00:29
【问题描述】:
所以我目前的情况是,我有两台 SSH 服务器,它们都必须通过运行 Tomato 的 Linux 路由器后面的端口 443 提供服务。
为了完成这项工作,我在路由器上有一个 SSH 服务器,它充当我想要实际连接的任何地方的中继。
我要连接的机器上的.ssh/config 文件如下所示:
Host destination
HostName <internal IP of destination behind router>
User gogs
Port 22
IdentityFile "<my identity file path>"
ProxyCommand ssh -q relay -W %h:%p
IdentitiesOnly yes
Host relay
HostName <my domain name>
User relay
Port 443
IdentityFile "<my identity file path>"
所以这对 SSH、SCP 甚至 git clone 都适用,但实际上其他 git 命令似乎都不起作用。
当我在ProxyCommand 上没有-q 标志的情况下执行get fetch 时,它会挂起一秒钟并显示Killed by signal 1。
我见过的所有其他解决方案都需要使用不同的代理命令,例如 nc 命令或 corkscrew。我拥有的路由器几乎仅限于它附带的命令,并且这两个都不可用。
关于如何使这项工作发挥作用的任何想法,或者至少解释为什么我正在尝试做的事情不起作用?
谢谢!
【问题讨论】:
-
你试过netcat吗? (
nc) 代理命令版本? -
感谢您的建议。我有路由器设置,所以
relay用户的shell 不能使用,所以配置它以允许nc命令是相当复杂的。无论如何,事实证明我的配置确实有效,我在诊断问题时犯了一个错误:)