ssh 命令的代理功能
几种模式
模式有三种:
-L
将本地端口映射到远程(将客户端请求转给远程服务器)-R
将远程端口映射到本地(客户端和远程服务器抢请求)-D
动态代理,生成一个 socks 代理,支持 socks(4)/socks5 协议
-R
代理
服务器连不上外网的时候常用这个。见 ssh 代理转发,让服务器上外网
-D
代理
生成一个 socks 代理。如图,我创建代理之后,本地用这个代理去访问网站,实际上是远程服务器代我访问了网站。
-L
代理
我能通过 ssh 连接到服务器,服务器能连接到私有的代码仓库,然后我可以通过本地的端口转发,然后在浏览器上通过 localhost:38930
访问代码仓库:
ssh -N -n -L38930:192.168.236.237:8930 服务器
-f
表示程序作为后台程序运行(fork
),不怕会话关闭或者按键中断(这里我觉得不太好用,所以不加)。在 Linux 下程序就会直接返回,但是在 Windows 的 cmd 下不会,可能是因为/dev/null
这个设备不存在?实测在 MSYS2 的 bash 环境中也能正常返回。-N
表示不要执行命令,仅仅转发端口。-n
表示从/dev/null
中重定向输入。若有-f
,则这个选项是隐含的,使用-t
来代替-n
可以使得 ssh 重新读取终端的交互输入(但是管道不行)。