SSH本地端口转发(打洞)

在这里插入图片描述

1 简介

SSH(全称为Secure Shell)端口转发也被称作SSH隧道(SSH Tunnel)或者“打洞”,因为它们是通过SSH登录之后,在SSH客户端与服务端之间建立一个隧道进行通信。SSH是通过加密传输数据的,所以非常安全。

本地端口转发(Local Port Forwarding),如上图。应用场景:通过访问本地网络中的某端口从而访问远程网络的指定端口。比如远程网络主机S1中在端口18702运行了一个服务,但是远程主机并没有对外开放此18702端口,这时如果本地需要访问远程主机中的服务可通过本地端口转发的方式。

2 前期准备

  • 位于不同网络的本地主机L1和远程主机S1
  • 远程主机S1中指定端口(以18702为例)运行一个服务,这里以nodeServer服务为例,原始代码如下
  • L1本地主机可通过网络访问远程主机S1

建立greeting.js内容如下:

const http = require('http');

const server = http.createServer(function (request, response) {
  response.writeHead(200, {
    "Content-Type": "text/plain"
  });
  response.end("Hello H\n");
});

try {
  server.listen(18702);
} catch (e) {
  console.log('start server error', e);
}

在远程主机启动服务,启动方式如下:

node ./greeting.js

在这里插入图片描述

3 本地访问

在L1本地主机执行如下命令

# 将本地的18702端口连接到远端主机lxh.space的18702端口
ssh -fNL localhost:18702:localhost:18702 root@lxh.space
# 本地访问本地的18702端口相当于访问远端主机的18702端口
curl localhost:18702

在这里插入图片描述
如上图,本地主机即首图中的L1,lxh.space主机即首图中的S1,通过SSH指令登录S1并连接到17802端口后,访问本地的18702端口相当于访问远端主机的18702端口。在实际应用中可根据需要替换本地及远程端口。

注意!!!
要保持SSH到远端主机为连接的状态才能通过本地端口访问远端端口,如果SSH连接断开,则访问本地端口就失败了。

如下图,杀掉本地到远端的SSH连接再访问如下:
在这里插入图片描述

4 命令简介

ssh -L 本地网卡地址:本地端口:目标地址:目标端口 用户@主机地址
ssh -L 本地端口:目标地址:目标端口 用户@主机地址

-L选项中的本地网卡地址是可以省略的,这时表示端口绑定了本机地址,可通过localhost127.0.0.1访问,也可指定具体的本机ip地址访问。

另外,命令中加了-fN选项:
-f:后台执行ssh指令
-N:不执行远程指令

5 局域网访问

如首图中显示,我们通过L1登录并连接远程主机端口,L1局域网络中的其他主机也可以通过访问L1的指定端口来访问S1的服务。

这时的转发连接指令需要绑定本地的局域网ip地址

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值