建立ssh反向隧道

SSH反向隧道设置指南:连接内网设备的方法

建立ssh反向隧道方法:

准备设备:

一台有公网IP的服务器A

一台内网的设备B

一台客户端设备C

说明:

1.假设内网设备B能连接外网服务器A,通过反向隧道,如果客户端C能连接外网服务器A,则客户端C也能连接内网设备B。

2.假设A和B都是linux服务器,运行了sshd服务。

建立ssh反向隧道过程:

步骤一:先在外网服务器A上修改sshd设置,使得允许端口转发

使用vim /etc/ssh/sshd_config,打开GatewayPorts开关为GatewayPorts yes(如果是ubuntu没有GatewayPorts,添加一行即可)。

重启sshd服务。

步骤二:在内网设备B上通过ssh连接外网服务器A,建立反向隧道

ssh -fN -R 2222:localhost:22 USER_A@IP_A

其中:

-N:表示不执行命令,只转发;

-f:表示后台运行;

-R:表示反向隧道;

2222:表示监听服务器的2222端口;

localhost:内网设备B本地地址;

22:所有包转发到内网设备B本地的22端口(默认22端口就是ssh服务);

步骤三:通过客户端设备C登录内网设备B

现在外网服务器A的2222端口已经转发到内网设备B的22端口,登录服务器A的ssh转发端口即可ssh到内网设备上。

ssh -p 2222 USER_B@IP_A

### 配置PyCharm通过SSH反向隧道进行远程开发与调试 为了使PyCharm能够通过SSH反向隧道连接到内网中的目标主机并支持远程开发和调试,需先建立稳定的SSH反向隧道。由于普通的SSH连接可能因网络波动而中断,推荐使用`autossh`来保持隧道的持续可用性[^1]。 #### 创建持久化的SSH反向隧道 假设外部机器拥有公网IP地址`public_ip`,内部网络的目标服务器具有私有IP`private_ip`,并且希望将本地8080端口映射至远端同一端口,则可以通过如下命令启动一个反向隧道: ```bash autossh -M 0 -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" \ -R public_ip:8080:localhost:8080 user@middle_server_ip ``` 上述指令中,选项解释如下: - `-M 0`: 关闭监控端口,默认情况下`autossh`会开启额外端口用于检测连接状态;这里关闭此功能以简化配置。 - `ServerAliveInterval` 和 `ServerAliveCountMax`: 设置心跳包机制防止闲置超时断开。 - `-R`: 表明这是一个反向隧道操作,格式遵循`[bind_address:]port:host:hostport`模式[^3]。 当这条命令被执行后,即使遇到短暂性的网络不稳定情况,`autossh`也会尝试重新建立丢失的链接,从而确保长期可靠的通信通道存在。 #### 在PyCharm里配置远程解释器及部署上传文件 完成SSH反向隧道搭建之后,在PyCharm内的具体设置步骤为: 1. 打开项目结构对话框(File -> Settings/Preferences...),导航到“Build, Execution, Deployment”下的“Deployment”。 2. 添加新的SFTP服务器条目,指定之前创建好的SSH连接详情,包括用户名、密码以及对应的公钥认证方式等信息。 3. 对于远程Python解释器的选择,进入“Project Interpreter”,点击齿轮图标选择“Add Remote...”。按照提示输入必要的SSH登录凭证,并指向已安装在远程环境里的Python版本路径。 4. 完成以上设定以后,即可利用PyCharm内置的功能轻松管理源码同步、执行脚本乃至调用GDB/PDB来进行交互式的程序调试工作了。 这样就实现了借助SSH反向隧道让位于防火墙后的计算资源对外提供服务的同时保障安全性[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值