ssh隧道
ssh隧道:
#选项含义: -n 重定向stdin到/dev/null
-g 允许远端主机连接本地转发端口
-f 后台运行,隐含-n选项(重定向stdin到/dev/null)
-q 安静模式
-N 不执行命令
-T 不创建TTY
-L 本地转发
-R 远程转发
-D 动态转发,实现socks5代理的关键
# 注意:1-下面的所有命令在SSH客户端上执行 2-如果ssh命令生成的隧道不够稳定,可以考虑AutoSSH
# 本地转发
ssh -gfq -NTL [SSH客户端IP]:SSH客户端主机新产生的监听Port:目标服务端IP:目标服务端Port SSH服务端User@SSH服务端IP
#此时在SSH客户端执行:netstat -tunlp 会发现新产生了一个Port监听,客户端可以访问这个Port来实现访问目标服务
#应用场景:有点像正向代理, 客户端->SSH客户端->【SSH服务端->目标服务端】 (此处SSH服务端和目标服务端可以是同一台主机,如果是同一台主机,则命令格式中的目标服务端IP:目标服务端Port的格式可以写成127.0.0.1:目标服务端口号。这里把“SSH服务端和目标服务端之间的网络”称之为目标网络。这种场景简单说就是客户端经由“SSH客户端->SSH服务端”之间的隧道访问目标网络。或者说客户端访问SSH客户端执行上述命令新产生的PORT监听来访问目标服务端Port代表的服务)
#远程转发
ssh -gfq -NTR [SSH服务端IP]:SSH服务端主机新产生的监听Port:目标服务端IP:目标服务端Port SSHD服务端User@SSHD服务端IP
#此时在SSHD服务端执行: netstat -tunlp 会发现新产生了一个Port监听,客户端可以访问这个Port监听来访问目标服务,默认监听在回环接口,如果需要监听其他接口,需要修改sshd_config的GatewayPorts
#应用场景:有点像反向代理, 客户端->SSHD服务端->【SSH客户端->目标服务端】 (此处SSH客户端和目标服务端可以是同一台主机,如果是同一台主机,则命令格式中的目标服务端IP:目标服务端Port的格式可以写成127.0.0.1:目标服务端口号,这里把“SSH客户端和目标服务端之间的网络”称之为目标网络。这种场景简单说就是客户端经由“SSH服务端<-SSH客户端”之间的隧道访问目标服务,或说客户端访问SSH服务端新产生的Port监听来访问目标服务端Port代表的服务)
#实际测试发现,如果想要SSH服务端新生成的端口监听到0.0.0.0的话,需要修改sshd配置文件(/etc/ssh/sshd_config)中的GatewayPorts为yes才行。
#动态转发
ssh -gfq -NTD [SSH客户端IP]:SSH客户端新产生的监听Port SSH服务端User@SSH服务端IP
#应用场景: socks5正向代理。各种tcp/udp包可以通过"[SSH客户端IP]:SSH客户端新产生的监听Port" 连接到远程SSH服务端,SSH服务端相当于socks5代理服务器。SSH服务端再把客户端发上来的各种各样的“Addr:Port”的请求转发出去
#注意:在win10中设置socks5代理时,在“设置->网络和Internet->代理”设置的代理是http代理,如果想要设置socks5代理,需要在地址框中显示填写“socks=地址”
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话