Answers:
当然; 只需使用SSH端口转发/隧道即可。使用以下命令启动到“代理”计算机的ssh连接:
ssh -L$LOCALPORT:$REMOTEHOST:$SSHPORT $PROXYHOST
$PROXYHOST
:您具有SSH访问权限的计算机$REMOTEHOST
:$ PROXYHOST可以连接的机器,但您不能。使用$PROXYHOST
可用于引用机器的主机名或IP$SSHPORT
:sshd在remotehost上侦听的端口;最有可能的22$LOCALPORT
:本地出站端口SSH在您的本地计算机上打开,该端口转发到端口22上的端口 $REMOTEHOST
保持该连接状态以保持隧道正常工作。您可能还想添加-N
到命令中,以使该连接不会启动远程shell,并且以后也不会意外关闭它。
隧道建立后,请执行以下操作:
ssh -p $LOCALPORT localhost
这会在转发到$REMOTEHOST
SSH端口的端口上尝试与本地计算机建立SSH连接。
如果您愿意在客户端上更新配置,则可以将客户端设置为使用网关盒作为代理。您的中继箱将需要安装netcat,为了获得最佳结果,您将需要基于密钥的身份验证设置。
这是我在.ssh / config中使用的通过另一个主机进行连接的方法。
Host internal-ssh-host-proxy
ProxyCommand /usr/bin/ssh username@ssh-relay-host "/bin/netcat -w 1 internal-ssh-host 22"
通过以上操作,您可以从客户端计算机简单地运行命令ssh internal-ssh-host-proxy。
如果代理SSH主机具有OpenSSH客户端5.4或更高版本,则不需要netcat,而可以使用内置的netcat模式。
Host internal-ssh-host-proxy
ProxyCommand /usr/bin/ssh username@ssh-relay-host -W internal-ssh-host:22
在提出的答案中,Zordache的是最佳的整体解决方案。但是,对于后代来说,如果您只想在不编辑配置的情况下临时连接即席连接,则可以使用该-t
标志分配伪终端,并直接在中继上执行ssh。
ssh -t relay.example.com ssh internal.example.com
您可以使用OpenSSH自动转发连接。在~/.ssh/authorized_keys
文件中,您可以指定要执行的命令,该命令可以是第二台计算机的SSH。
[ssh client] ----> [ssh relay server] ----> [ssh target server]
you modified authorized_keys target machine
您最终将看到两个提示Password:
:一个提示给中继服务器,另一个提示给目标服务器。您始终可以通过使用证书来删除此行为。