为了访问特定的 Linux 机器,我必须先通过 ssh 连接到提供的网关服务器,但是我从未在网关服务器上收到命令行。登录网关后,系统会立即提示我输入网关后面的所需目标机器的名称(有多个),如果我提供了有效的机器名称,系统会提示我输入网关后面所请求机器的用户名,然后我就会直接进入网关后面所请求机器的命令行。
在这种情况下,是否可以从我的客户端计算机到网关后面的目标计算机设置无密码 ssh 登录?
那么如何通过 ssh 将存储库克隆到网关后面的目标计算机呢?我可以通过网关计算机 ( gw.foobar.com
) 直接 scp 到挂载在目标计算机上的文件系统,如下所示:
scp foo.txt [email protected]:/home/myusername
但是如果我尝试
hg clone myrepository ssh://[email protected]//home/myusername
系统提示我输入网关密码,然后:
sshgate:无效命令(会话类型)‘HG’
中止:无法创建远程 repo!
答案1
网关是否允许您使用端口转发?如果您这样做会发生什么ssh gateway -v -W internalhost:22
。如果该命令有效,那么就很容易。只需将其用作代理命令即可。网关上缺少交互式 shell 并不一定意味着端口转发被禁用。端口转发发生在 SSH 协议级别,并且根本不依赖于登录时启动的任何 shell。
在你的.ssh/config
Host farhost
ProxyCommand ssh gatewayhost -W internalhost:22