ssh隧道与代理

本文介绍SSH的高级功能,包括如何将其用作SOCKS5代理服务器实现无限制上网,以及如何利用端口映射功能轻松访问公司或学校的内部资源。

ssh是用来远程登录主机的作用大家都知道,而且传输的内容全部经过加密处理也是大家喜欢其的主要因素。但其实ssh能做的更多,例如作为代理服务器。

通过ssh 的-D参数,我们可以在本地搭建一个socks5服务器,具体使用方法如下:

ssh -qTNf -D 127.0.0.1:12345 test@222.333.444.555

其中-q表示该命令进入安静模式

-T是指该命令不占用shell

-N是指该命令不执行远程命令

-f是指该命令在后台运行

-D是该命令重要参数,他的后面跟着socks5服务器的地址与端口

最后就是远程服务器用户名和地址

执行完该命令后,我们需要在浏览器中设置代理服务器,地址和端口就是上面提到的,然后记得选择socks5协议。那么以后每浏览一个页面,都会先经过代理服务器,然后再去请求页面,接着页面先到达代理服务器,最后才返回我们自己的浏览器。过程好像变得复杂了,但是这样的作用是什么呢,很常见,例如有一些校园网是限制ipv4流量的,如果我们找到一台支持ipv6的远程服务器,而且校园网大部分都支持ipv6,那么我们就能通过建立ipv6代理服务器来无流量限制上网了。再者,如果我们能找到外国的免费服务器,能让我们通过ssh登录,那么我们通过建立代理服务器来了,后能做的事情就请读者自行脑补吧偷笑

接下来继续讲的是ssh的端口映射功能,这个也相当好用,例如我们在家如果想访问公司或学校的资源,我们需要先登录一台拥有公网ip的服务器,然后在访问局域网的主机,譬如,我们是A主机,需要访问学校的C主机,而只有学校B主机有公网ip,我们需要先登录B主机,然后才能访问C主机。过程很麻烦,这时我们就需要做一个端口映射了,而这个ssh也能帮我们完成。具体命令如下:

ssh -N -f -L 127.0.0.1:12345:10.21.0.34:22 test@12.3..4.5

其中-N,-f作用上面已经讲了,这里最重要的是-L命令,它作用是做本地映射,使得远程服务器的端口相当于本地某自定义的端口,如上面的命令,本地的12345端口就相当于10.21.0.34的22端口,以后我只需要使用ssh user@127.0.0.1 -p 12345命令就能登录10.21.0.34了,注意user是10.21.0.34的用户,最后就是我们所使用的中间服务器,这个地址需要是我们直接访问到的。其实上面所说的A主机就是127.0.0.1,B主机就是12.3.4.5,C主机就是10.21.0.34。当然了,有本地映射肯定有远程映射,就是把-L换成-R,这样我们访问远程主机的端口就相当于访问本地的端口,但我没发现该功能的更多用途。

如果你没有什么中间服务器,只是想做个端口映射,那也很简单,如下:

ssh -N -f -L 12345:12.3.4.5:22 test@12.3.4.5

就是把远程服务器地址写成中间服务器地址就完事了。

学习完ssh这些用法后有没有对ssh产生无比崇敬的心情的,各种膜拜啊。

### 如何配置 SSH 隧道或使用 SSH 代理 #### 安装 SSH 客户端 在本地机器上需要先确认已安装 SSH 客户端。对于大多数 Linux 发行版,默认已经预装了该工具;如果未安装,则可通过对应的包管理器完成安装[^1]。 #### 手动创建 SSH 隧道 SSH 隧道可以通过命令行轻松实现,具体方法如下: - **本地端口转发 (Local Port Forwarding)** 这种模式允许将远程服务器上的某个服务映射到本地的一个端口上。例如,要将远程主机 `example.com` 的 MySQL 数据库(默认监听 3306 端口)映射至本机的 12345 端口,可运行以下命令: ```bash ssh -L 12345:localhost:3306 user@example.com ``` 此时访问本机的 `127.0.0.1:12345` 即相当于连接到了远程数据库[^2]。 - **动态端口转发 (Dynamic Port Forwarding)** 动态转发通常用于构建 SOCKS 代理,从而让多个应用程序流量都经过安全通道传输。下面是一个典型例子: ```bash ssh -D 8080 user@remote-server-address ``` 接下来需调整浏览器或其他软件中的网络设置,指定其通过位于 `127.0.0.1:8080` 的 SOCKS 代理发送请求[^4]。 #### 利用图形界面工具 MobaXterm 构建 SSH 隧道 除了命令行操作外,还可以借助像 MobaXterm 这样的 GUI 工具来简化流程。以下是基本步骤概述[^3]: 1. 启动 MobaXterm 应用程序; 2. 转向菜单栏下的 “Tools” -> “MobaSSH Tunnel”,启动新窗口; 3. 根据提示填写必要的参数,比如目标 IP 地址、用户名以及所期望绑定的本地端口号等信息; 4. 提交表单并验证连接状态是否正常工作即可。 ```python import paramiko client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) try: client.connect('hostname', port=port, username='username', password='password') except Exception as e: print(f'Connection failed with error {e}') finally: client.close() ``` 上述 Python 示例展示了如何利用 Paramiko 库自动化执行简单的 SSH 登录过程,这同样适用于脚本化批量部署场景下的隧道初始化逻辑开发需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值