-1

我们的生产服务器由跳转主机访问。例如,如果我想登录到主机 C,我必须 ssh 到主机 A。在主机 A 中,我可以 ssh 到主机 B。在主机 B 中,我可以 ssh 到主机 C。

我使用secureCRT 作为ssh 客户端。我发现当我需要将文件传输到主机 C 时,我可以使用 z-modem 协议将文件直接从我的计算机发送到主机 C。这可以绕过主机 A 和 B。

那么它怎么能做到这一点呢?我可以编写一个程序来使用 z-modem 发送文件而不是鼠标操作吗?

4

1 回答 1

0

SSH 隧道

SSH 端口转发是 SSH 中的一种机制,用于将应用程序端口从客户端机器传送到服务器机器,反之亦然。它可用于为遗留应用程序添加加密,通过防火墙,一些系统管理员和 IT 专业人员使用它从他们的家用机器打开进入内部网络的后门。它也可能被黑客和恶意软件滥用以打开从 Internet 到内部网络的访问权限。

在 OpenSSH 中,使用 -L 选项配置本地端口转发:

ssh -L 80:intra.example.com:80 gw.example.com

此示例打开到 gw.example.com 跳转服务器的连接,并将任何到本地计算机上端口 80 的连接转发到 intra.example.com 上的端口 80。

默认情况下,任何人(即使在不同的机器上)都可以连接到 SSH 客户端机器上的指定端口。但是,这可以通过提供绑定地址来限制在同一主机上的程序:

ssh -L 127.0.0.1:80:intra.example.com:80 gw.example.com

OpenSSH 客户端配置文件中的 LocalForward 选项可用于配置转发,而无需在命令行中指定它。

远程转发 在 OpenSSH 中,远程 SSH 端口转发是使用 -R 选项指定的。例如:

ssh -R 8080:localhost:80 public.example.com

这允许远程服务器上的任何人连接到远程服务器上的 TCP 端口 8080。然后,连接将通过隧道返回客户端主机,然后客户端与 localhost 上的端口 80 建立 TCP 连接。可以使用任何其他主机名或 IP 地址代替 localhost 来指定要连接的主机。

这个特定示例对于让外部人员访问内部 Web 服务器非常有用。或者将内部 Web 应用程序暴露给公共 Internet。这可以由在家工作的员工或攻击者完成。

默认情况下,OpenSSH 只允许从服务器主机连接到远程转发端口。但是,可以使用服务器配置文件 sshd_config 中的 GatewayPorts 选项来控制这一点。以下替代方案是可能的:

GatewayPorts no

这可以防止从服务器计算机外部连接到转发端口。

GatewayPorts yes

这允许任何人连接到转发的端口。如果服务器位于公共 Internet 上,则 Internet 上的任何人都可以连接到该端口。

GatewayPorts clientspecified

这意味着客户端可以指定一个 IP 地址,允许从该地址连接到端口。其语法是:

ssh -R 52.194.1.73:8080:localhost:80 host147.aws.example.com

在此示例中,仅允许从 IP 地址 52.194.1.73 到端口 8080 的连接。

感谢:https ://www.ssh.com/ssh/tunneling/example

于 2019-09-16T03:23:46.363 回答