SSH端口转发

SSH端口转发

参考文档#

精美图片来自B站 | IBM上的完整实践 以及对他的整理 | 使用MOBAXTERM的实践

概述#

  1. 远程端口转发,使用-R参数,内网穿透

  2. 动态端口转发,使用-D参数,用作代理上网

  3. 本地端口转发,使用-L参数,是动态端口转发的阉割版本,只能转发指定的端口,用(wireshark?)监听?

  4. 其他参数,注意-g参数,加了这个参数局域网电脑可以访问配置过的电脑达到转发

    Copy
    -f 要求 ssh在执行命令前退至后台.它用于当ssh准备询问口令或密语,但是用户希望它在后台进行.该选项隐含了-n选项.在远端机器上启动 -N 不执行远程命令.用于转发端口. -C 要求进行数据压缩 (包括stdin, stdout, stderr以及转发X11和TCP/IP连接 的数据).压缩算法和gzip(1)的一样,协议第一版中,压缩级别 “level” 用CompressionLevel选项控制.压缩技术在modem线路或其他慢速连接上很有用,但是在高速网络上反而 可能降低速度.可以在配置文件中对每个主机单独设定这个参数. -g 允许远端主机连接本地转发的端口 -q 安静模式.消除所有的警告和诊断信息 -T 禁止分配伪终端 -n 把 stdin重定向到/dev/null (实际上防止从stdin读取数据). ssh在后台运行时一定会用到这个选项.它的常用技巧是远程运行X11程序.

中转ssh(server)的设置#

Copy
vi /etc/ssh/sshd_config AllowAgentForwarding yes #AllowTcpForwarding yes GatewayPorts yes 重启服务 service sshd restart

远程端口转发(内网穿透)#

网络情况如下,我们可以使用这种形式访问到右边私网的8080,具体的设置可以看mobax的图更好

Copy
ssh -R 12310:127.0.0.1:5500 root@xxx.com # 在私网电脑运行,把5500端口映射为公网的12310端口

本地端口转发#

访问我们本地机器A的a1端口相当于访问远程机器C的c1端口,中间由B机器转发

动态转发#

这个好理解,就是代理上网

保持持久的SSH链接的两种方法#

  1. 在客户端配置

    Copy
    vi /etc/ssh/ssh_config(注意不是/etc/ssh/sshd_config文件),后面添加 Host * ServerAliveInterval 30

    这表示要让所有的ssh连接自动加上此属性;如果要指定服务端,如下:使用-o的参数ServerAliveInterval来设置一个防止超时的时间

    Copy
    ssh -o ServerAliveInterval=30 IP地址
    1. 编辑服务器 /etc/ssh/sshd_config,最后增加 ClientAliveInterval 60 ClientAliveCountMax 1 这 样,SSH Server 每 60 秒就会自动发送一个信号给 Client,而等待 Client 回应

名词理解#

Copy
本地端口转发: 访问本地的端口比如 localhost:10000 相当于访问远端的端口 xx.xx.xx.xx:22 远程端口转发: 内网穿透 访问远程的端口xx.xx.xx.xx:33389 相当于访问远程端口相连的一个机器的某个端口比如3389 ssh建立方式是从相连机器发起到远程的云主机的 动态端口转发: 代理上网 这里可以做tcp抓包应该 访问本地的端口的数据,都是相当于使用远程云主机去访问 Ssh 链接是本地到云主机 Local port forwarding – connections from an SSH client are forwarded, via the SSH server, to a destination server; Remote port forwarding – connections from an SSH server are forwarded, via the SSH client, to a destination server; Dynamic port forwarding – connections from various programs are forwarded, via the SSH client to an SSH server, and finally to several destination servers;
posted @   zongzi10010  阅读(530)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
历史上的今天:
2019-03-21 fork子进程
2019-03-21 多输入使用多线程
2019-03-21 多输入select
点击右上角即可分享
微信分享提示
CONTENTS