利用腾讯云主机+SSH远程端口转发实现内网穿透

简介: 利用腾讯云主机+SSH远程端口转发实现内网穿透

640.jpg

SSH远程端口转发介绍


之前有介绍SSH远程端口转发,可以参考之前的文章

Linux SSH端口转发实践

利用MobaXterm图形化配置SSH端口转发

man ssh 查看-R远程端口转发的相关详细介绍


ssh -R [bind_address:]port:host:hostport
 Specifies that connections to the given TCP port or Unix socket on the remote (server) host are to be forwarded to the given host
 and port, or Unix socket, on the local side.  This works by allocating a socket to listen to either a TCP port or to a Unix socket
 on the remote side.  Whenever a connection is made to this port or Unix socket, the connection is forwarded over the secure channel,
 and a connection is made to either host port hostport, or local_socket, from the local machine.
 Port forwardings can also be specified in the configuration file.  Privileged ports can be forwarded only when logging in as root on
 the remote machine.  IPv6 addresses can be specified by enclosing the address in square brackets.
 By default, TCP listening sockets on the server will be bound to the loopback interface only.  This may be overridden by specifying
 a bind_address.  An empty bind_address, or the address ndicates that the remote socket should listen on all interfaces.
 Specifying a remote bind_address will only succeed if the server's GatewayPorts option is enabled (see sshd_config(5)).
 If the port argument is he listen port will be dynamically allocated on the server and reported to the client at run time.
 When used together with -O forward the allocated port will be printed to the standard output.

需求场景


如下图所示

1)内网服务器CentOS7.6 IP 192.168.198.130 (该机器可以访问互联网)

2)腾讯云主机IP地址119.45.157.198


640.jpg


通过远程工具例如向日葵或者teamviewer运维起来非常卡顿  


这时可以将其SSH端口以及MySQL 3306端口通过ssh 远程端口转发到云主机上, 然后直接登录云主机后访问转发后的端口进行运维

640.png


具体步骤


登录本地内网服务器SSH后


ssh -N -f -R 8806:127.0.0.1:3306 root@119.45.157.198

640.jpg


640.jpg


在云主机端

netstat -anp | grep 8806

说明已经成功转发到8806端口了 这时可以直接访问8806端口

mysql -uroot -p -h 127.0.0.1 -P 8806

效果图所示


640.jpg


同样方法转发本地内网服务器的22端口到云主机8122端口

ssh -N -f -R 8122:127.0.0.1:22 root@119.45.157.198

640.jpg

在远程的云主机端

ssh 127.0.0.1 -p 8122


640.jpg

问题


但是这样只能先SSH登录到云主机后台,只能云主机本地访问

因为转发后的端口都是监听在127.0.0.1 loopback网卡上

要想其它机器也能访问,需要sshd服务开启GatewayPorts


方法如下

vi /etc/ssh/sshd_config
将#GatewayPorts no改为GatewayPorts yes
systemctl restart sshd.service

修改前

image.png

修改后

640.png


GatewayPorts介绍
Specifies whether remote hosts are allowed to connect to ports forwarded for the client.  By default, sshd(8) binds remote port
forwardings to the loopback address.  This prevents other remote hosts from connecting to forwarded ports.  GatewayPorts can be
used to specify that sshd should allow remote port forwardings to bind to non-loopback addresses, thus allowing other hosts to
connect.  The argument may be no to force remote port forwardings to be available to the local host only, yes to force remote
port forwardings to bind to the wildcard address, or clientspecified to allow the client to select the address to which the
forwarding is bound.  The default is no.


然后将云主机上转发生成的sshd进程kill掉,别把所有sshd服务kill掉了,不然这里ssh会话就连不上了,得云主机控制台vnc上重启sshd服务了


然后再内网机器重新配置转发命令


ssh -N -f -R 8122:127.0.0.1:22 root@119.45.157.198


640.jpg

另外云主机安全组要放开转发出来的端口8122

640.jpg

这时就可以直接访问云主机的8122,内网穿透成功


640.jpg

SecureCRT的远程端口转发


SecureCRT也可以直接配置远程端口转发

640.jpg

640.jpg

640.jpg


640.jpg


配置了转发,可以看到云主机SSHD服务已经在监听8622和8806端口

但是发现从公网访问出现如下报错


640.jpg

640.jpg

但SSH可以通过ssh 0.0.0.0 -p 8622可以访问

640.jpg


目前该问题未解决,待研究


关于SSH端口转发可以参考 https://nnc3.com/mags/Networking2/ssh/ch09_02.htm

相关文章
|
11天前
|
网络协议 Ubuntu Linux
解决ssh: connect to host IP port 22: Connection timed out报错(scp传文件指定端口)
解决 `ssh: connect to host IP port 22: Connection timed out` 报错涉及检查 SSH 服务状态、防火墙配置、网络连通性和主机名解析等多个方面。通过逐步排查上述问题,并在 `scp` 命令中正确指定端口,可以有效解决连接超时的问题,确保文件传输的顺利进行。希望本文提供的解决方案能帮助您快速定位并解决该错误。
37 3
|
16天前
|
运维 网络安全
解决ssh: connect to host IP port 22: Connection timed out报错(scp传文件指定端口)
通过这些步骤和方法,您可以有效解决“ssh: connect to host IP port 22: Connection timed out”问题,并顺利使用 `scp`命令传输文件。
94 7
|
4月前
|
Ubuntu 网络安全 数据安全/隐私保护
如何在 Ubuntu 上创建一个 SSH CA 以验证主机和客户端
如何在 Ubuntu 上创建一个 SSH CA 以验证主机和客户端
92 0
|
6月前
|
安全 数据挖掘 Shell
SSH安全远程登录与端口转发
**SSH 概述**:SSH 是开发者必备工具,用于安全远程登录及文件传输。本文聚焦SSH的两大功能:**密钥登录**和**端口转发**。
162 0
|
2月前
|
网络安全 Python
Python编程--目标IP地址段主机指定端口状态扫描
Python编程--目标IP地址段主机指定端口状态扫描
60 1
|
4月前
|
网络协议 Linux 网络安全
在Linux中,如何将本地 80 端口的请求转发到 8080 端口?当前主机 IP 为10.0.0.104。
在Linux中,如何将本地 80 端口的请求转发到 8080 端口?当前主机 IP 为10.0.0.104。
|
4月前
|
网络协议 关系型数据库 MySQL
ssh端口转发
ssh端口转发
|
4月前
|
网络协议 Ubuntu Linux
在Linux中,如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0。
在Linux中,如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0。
|
4月前
|
安全 Linux 网络安全
在Linux中,使用rsync同步数据时,假如采用的是ssh方式,并且目标机器的sshd端端并不是默认的22端口,该如何做?
在Linux中,使用rsync同步数据时,假如采用的是ssh方式,并且目标机器的sshd端端并不是默认的22端口,该如何做?
|
4月前
|
SQL 网络协议 Java
JAVA SQLServerException: 通过端口 1433 连接到主机 127.0.0.1 的 TCP/IP 连接失败
JAVA SQLServerException: 通过端口 1433 连接到主机 127.0.0.1 的 TCP/IP 连接失败
70 0