TypechoJoeTheme

MetMan's Blog

网站页面

利用SSH端口转发访问内部服务器

MetMan博 主
2023-11-04
/
0 评论
/
137 阅读
/
609 个字
/
百度已收录
11/04
本文最后更新于 2023年11月04日,已超过 320天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

上一篇介绍了“Windows 10开启OpenSSH服务”,下面我们可以试验通过Windows 10机器作为中转访问内部Linux服务器。利用的技术是SSH端口转发技术,也叫SSH隧道(tunnel)。

SSH端口转发功能说明网上有很多介绍(关键词:端口转发、ssh隧道、内网穿透、跳板机等等),比如https://developer.aliyun.com/article/1035160这篇文件介绍的很详细。

原理很简单,外部机器A不能直接访问内部服务器C,但有一台服务器B很特殊,它能和A、C都能建立连接,将B作为“中介”、“跳板”,从而实现A访问C的目的。

SSH端口转发参数

ssh -L localport:remotehost:remotehostport sshserver

说明:
localport       本机开启的端口号
remotehost      最终连接机器的IP地址
remotehostport         最终连接机器的端口号
sshserver       转发机器的IP地址

选项:
-f 后台启用
-N 不打开远程shell,处于等待状态(不加-N则直接登录进去)
-g 启用网关功能

port(端口)是进程之间通信的指定窗口,有一些事先约定的端口,比如http协议使用80端口,https使用443端口,SSH协议使用22端口。

理解:所有走localport端口的TCP数据传输都会使用ssh协议通过转发服务器sshserver(“中介”)转发给remotehost:remotehostport,在本地与远程服务器之间建立ssh隧道。

当ssh隧道建立好后,下一步只需要ssh连接本地的localport就可以连接远程服务器了。

ssh -p localport remoteuser@127.0.0.1

注意这里需要使用远程服务器的用户名remoteuser,本地localhost地址127.0.0.1。

使用方法

场景一:本地转发

场景:内部服务器C不允许外部访问,服务器B可以访问C,也可以被外部A访问,现在外部机器A需要访问C。

在A机器上执行:

# 建立ssh隧道
ssh -L 2222:192.168.75.123:22 -fN 192.168.75.122  # 2222是A机器空闲端口
# 需要输入服务器B密码验证

# 连接C
ssh 127.0.0.1 -p 2222
# 需要输入服务器C密码验证

这样就连接到C机器了。

注:查看系统空闲端口方法

# Linux 
netstat -nltp | grep 2222 

# Windowns 
netstat -an | findstr :2222

场景二:远程转发

场景:内部服务器C不允许外部访问,服务器B也不允许外部访问,但B可以主动访问外部服务器A。

服务器B执行:

ssh -R 2222:192.168.75.123:22 -fN 192.168.75.121   # 2222是服务器B空闲端口

服务器A执行:

ssh 127.0.0.1 -p 2222

场景三:动态转发

MobaXterm SSH端口转发设置

Tools->Network->MobaSSHTunnel(port for forwarding)中设置,创建New SSH tunnel

将上面对应的参数填入

SSH隧道建立好后,连接远程服务器C

ssh -p localport remote_user@127.0.0.1

参考资料

ssh端口转发(跳板机)详解

一文彻底搞懂ssh的端口转发_ssh端口转发_MyySophia的博客-CSDN博客

ssh
朗读
赞(0)
赞赏
感谢您的支持,我会继续努力哒!
版权属于:

MetMan's Blog

本文链接:

https://blog.metman.top/index.php/archives/68/(转载时请注明本文出处及文章链接)

评论 (0)

互动读者

标签云

最新回复

暂无回复

登录
X
用户名
密码