使用代理连接远程主机

使用代理连接远程主机

现在有两台主机 Proxy 和 Target,如果客户端直接连接 Target 时的网络不畅通,而客户端和 Proxy、Proxy 和 Target 之间的网络情况比较好,那么就客户端就可以通过 Proxy 来连接 Target。

方式一

使用 Socks5 代理来访问(本文不介绍如何搭建 Socks5 代理)。在连接 Target 时,客户端会通过 Socks5 代理向 Target 发送数据。

假设客户端在本地端口 10808 上有一个 Socks5 代理服务。打开或创建 ~/.ssh/config 文件,写入以下配置。

1
2
3
4
5
# 这是用来保存 SSH 客户端的配置的文件,在每次连接时,客户端都会从这个文件中读取配置。

Host ${Target_Hostname}
HostName ${Target_Hostname}
ProxyCommand connect -a none -S 127.0.0.1:10808 %h %p

将 ${Target_Hostname} 替换为自己的 Target 的地址。

方式二

使用 SSH 自带的代理功能。在连接 Target 之前,客户端会先与 Proxy 建立 SSH 连接,然后再使用这条连接,向 Target 发送数据。

打开上述的配置文件,写入以下内容。

1
2
3
Host ${Target_Hostname}
HostName ${Target_Hostname}
ProxyCommand ssh -W %h:%p ${Proxy_Hostname}

将 ${Target_Hostname} 和 ${Proxy_Hostname} 替换为自己的 Target 和 Proxy 的地址。