Featured image of post SSH设置代理

SSH设置代理

因为疫情在家,无法直接连接学校的服务器,需要使用内网进行连接,于是想到给SSH设置代理进行连接学校的服务器。一般的客户端都比较方便的进行代理的设置,但如果还想使用Visual Studio Code 对服务器上文件远程修改,则对OpenSSH进行代理设置将会方便很多。

总体的思路都是对OpenSSH的config进行配置,下面针对Windows和Linux两个系统的配置进行说明,可根据使用的不同操作系统进行选择。

学校提供了深信服的EasyConnect,但是出于对其向本机中安装证书的不信任,采用将EasyConnect代理软件运行在Docker中,并开放Socks5和HTTP供宿主机连接以使用代理。具体实现使用 docker-easyconnect

Windows

长期使用

Windows系统下,OpenSSH使用代理可以用connect。Windows默认没有带这个程序,可以通过两个方法进行安装:

  1. 安装Git。Git安装后可以找到connect.exe程序,路径为Git安装路径\mingw64\bin\connect.exe
  2. 直接安装connect

Windows系统中配置文件通常在 C:\Users\xxx\.ssh\config 中,其中xxx是你的用户名。将下面内容根据实际情况修改后添加到配置文件中。

1
2
3
Host <ServerName>
    HostName <ServerIP>
    ProxyCommand <path-to-connect> -S <host>:<port> %h %p

需要修改的参数说明:

参数 说明
ServerName 服务器名称
ServerIP 服务器IP地址
path-to-connect connect的绝对路径
-S -S指Socks 5协议,-H为HTTP协议
host 服务对应IP,若在本机,则为127.0.0.1
port 服务对应端口

临时使用

临时使用代理,则无需对配置文件进行修改,但仍需要安装connect。只需在ssh连接命令后添加参数即可

1
ssh user@server -o "ProxyCommand <path-to-connect> -S <host>:<port> %h %p"

Linux/macOS

长期使用

Linux/macOS系统中下,使用netcat,简称nc。部分发行版没有安装,则需要手动进行安装。

nc(netcat) 是 macOS 自带的 OpenBSD的nc变种 。Linux 下可以装同版本的,或者根据你当前所用的 nc 的说明,调整参数达到同样的目的。

Linux/macOS系统中的配置文件通常在~/.ssh/config 。将下面内容根据实际情况修改后添加到配置文件中。

1
2
3
Host <ServerName>
    HostName <ServerIP>
    ProxyCommand nc -X 5 -x <host>:<port> %h %p

需要修改的参数说明:

参数 说明
ServerName 服务器名称
ServerIP 服务器IP地址
-X 5 -X 5 指代理协议Socks 5, -X 4 指代理协议Socks 4, -X connect指代理协议Socks HTTP
host 服务对应IP,若在本机,则为127.0.0.1
port 服务对应端口

临时使用

临时使用代理,则无需对配置文件进行修改,但仍需要安装connect。只需在ssh连接命令后添加参数即可

1
ssh user@server -o "ProxyCommand nc -X 5 -x <host>:<port> %h %p"

参考文献

  1. 让你的SSH通过HTTP代理或者SOCKS5代理
  2. OpenSSH/Cookbook/Proxies and Jump Hosts
comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy