SSH反向隧道的内网穿透

环境如下:

A机器两块网卡eth0(192.168.0.173)、eth1(192.168.100.1),eth0可以上外网,eth1仅仅是内部网络,B机器只有eth1(192.168.100.3),和A机器eth1可以通信互联,外网无法ssh进入B主机,可以使用ssh的反向隧道实现。

A:

1、首先在A 上编辑sshd 的配置文件/etc/ssh/sshd_config,将GatewayPorts 开关打开:


vim /etc/ssh/sshd_config

GatewayPorts yes

2、重启sshd服务,使用修改生效

systemctl restart sshd
ssh -ngfNTR 1222:192.168.100.3:22 [email protected] -o ServerAliveInterval=300

-f 表示后台执行
-N 表示不执行任何命令
-R 建立反向隧道
1222 A机用来外面ssh的监听端口
-o ServerAliveInterval=300 的意思是让ssh client每300秒就给server发个心跳,以免链路被RST.
-f Requests ssh to go to background just before command execution. 让该命令后台运行 .
-n Redirects stdin from /dev/null (actually, prevents reading from stdin).
-N Do not execute a remote command. 不执行远程命令 .
-T Disable pseudo-tty allocation. 不占用 shell .
-g Allows remote hosts to connect to local forwarded ports.

[[email protected] ~]# netstat -antp | grep 1222
tcp        0      0 0.0.0.0:1222            0.0.0.0:*               LISTEN      16182/sshd: root
tcp6       0      0 :::1222                 :::*                    LISTEN      16182/sshd: root

3、外部主机连接B就直接连接A的1222端口就可以了,1222要被防火墙允许

ssh -p 1222 [email protected]
[email protected]:/mnt/c/Users/aikera# ssh -p 1222 [email protected]
Last failed login: Tue Feb 13 11:19:53 CST 2018 from gateway on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Tue Feb 13 10:52:09 2018 from gateway
[[email protected] ~]#

4、A上查看端口的监听状态:

[[email protected] ~]# netstat -antp | grep 1222
tcp        0      0 0.0.0.0:1222            0.0.0.0:*               LISTEN      16182/sshd: root
tcp        0      0 192.168.0.173:1222      192.168.0.190:60738     ESTABLISHED 16182/sshd: root
tcp6       0      0 :::1222                 :::*                    LISTEN      16182/sshd: root    

5、保持连接

我们需要这个隧道能够一直保持连接状态,在需要的时候可以随时接入,我们需要安装使用autossh

B:

yum install autossh -y

B:

 autossh -p 22 -M 6777 -fNR 1322:127.0.0.1:22 [email protected]   #-M 参数指定的端口用来监听隧道的状态,与端口转发无关;同时需要在A防火墙打开1322端口主机之间可以使用不用密码的key

The authenticity of host ‘192.168.0.173 (192.168.0.173)‘ can‘t be established.
ECDSA key fingerprint is d5:1c:36:d7:57:64:3d:5b:8a:e8:aa:93:54:1d:8c:22.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.0.173‘ (ECDSA) to the list of known hosts.
Enter passphrase for key ‘/root/.ssh/id_rsa‘:

A:


[[email protected] ~]# netstat -antp | grep 1322
tcp        0      0 0.0.0.0:1322            0.0.0.0:*               LISTEN      16798/sshd: root
tcp6       0      0 :::1322                 :::*                    LISTEN      16798/sshd: root    

外面ssh B:

[email protected]:/mnt/c/Users/aikera# ssh -p 1322 [email protected]

[email protected]‘s password:
Last login: Tue Feb 13 15:29:30 2018 from gateway
[[email protected] ~]#

添加服务:

B:

useradd autosshuser
passwd autosshuser
su - autossh
ssh-keygen -t rsa  #生成密匙对,按回车,不使用密码的密匙对
ssh-copy-id [email protected]  #copy密匙到A

B

创建以autosshuser 用户权限调用autosshd 的service 文件。将下面文本写入到文件/lib/systemd/system/autosshd.service,并设置权限为644:

[Unit]Description=Auto SSH Tunnel
After=network-online.target
[Service]
User=autosshuser
Type=simple
ExecStart=/bin/autossh -p 22 -M 5689 -NR ‘*1322:127.0.0.1:22‘ [email protected] -i /home/autossh/.ssh/id_rsa
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=always
[Install]
WantedBy=multi-user.target
WantedBy=graphical.target
systemctl enable autosshd    #允许自启动
systemctl start autosshd

A
使用这条反向隧道穿透B 所在的NAT SSH 连接到B

ssh -p 1322 [email protected]

外部:

ssh -p 1322 [email protected]

C主机:

通过ssh做端口转发代理上网:

ssh -p 1322 -qngfNTD 3128 [email protected]

C 是外面的电脑,A 是你的云主机,B 是你公司的电脑。这样做就可以给浏览器设置端口为3128 的sock4 本地(127.0.0.1)代理

浏览公司内网web

原文地址:http://blog.51cto.com/m51cto/2071530

时间: 2024-10-08 05:32:46

SSH反向隧道的内网穿透的相关文章

SSH反向通道暴露内网主机80端口——作为Nginx的upstream后端

背景 微信开发的时候,需要提供一个已经备案的域名才能调用api.这里假设我的域名是domain.com,我把weixin.domain.com解释到一个公网IP.我的项目就部署到weixin.domain.com上面,微信接入的URL就是http://weixin.domain.com/gateway.php.现在有个问题,我的项目有一些bug,而又不是肉眼能看出来的,我需要debug.但是微信发送给公众账号的消息是发送到http://weixin.domain.com/gateway.php,

内网接口调用,ssh反向隧道与nginx反向代理

外网访问测试机. Windows机器使用SSH反向隧道.服务端使用反向代理 win下安装openssh-win并设置环境变量 打开cmd C:\Users\Administrator>ssh -p 22 -R 1999:localhost:8080 -b 0.0.0.0 [email protected] -R 1999远程机器的端口 -b 外网段监听,不加是 127.0.0.1监听 8080 本机端口 这样外网访问 8.8.8.8的1999端口就映射到了localhost的8080 服务器ng

基于MetaSploit内网穿透渗透测试

自己在无聊捣鼓windows渗透的时候想到以往都是基于内网渗透,想要更加自由地进行渗透就需要内网穿透实现可以任意控制网段主机,同时也将端口转发作为自己的跳板.集成的脚本是考虑到在渗透的时候需要开启的工具繁多,所以尽可能能够一键开启工具,并且半自动化部署,可以优化前期的准备. 本文分成三个模块 ·利用natapp进行内网穿透 ·利用msfvenom生成后门渗透 ·半自动化脚本进行优化 利用natapp进行内网穿透 首先需要下载一个工具用于内网穿透,内网穿透主要是利用远程服务器将tcp连接转发到自己

内网穿透测试

个人用ngrok小工具做一个内网穿透测试,原理就是反向代理 http://531699aa.ngrok.io/proWms/prowmsapi/oms/receiveStockOutOrder 原文地址:http://blog.51cto.com/9381188/2104019

内网穿透新章法 serveo

非常非常适合临时对外演示的方案 步骤如下 1.本地起一个测试的web服务 /Users/mac/venv/typeidea/bin/python /Users/mac/PycharmProjects/typeidea-env/typeidea/manage.py runserver 8000 输出如下 System check identified no issues (0 silenced). July 29, 2019 - 17:52:55 Django version 2.2.3, usi

一款好用的内网穿透工具,拯救没有公网IP的你

越来越多的用户没有自己的独立公网IP,在发布一些应用或者网站到外网的时候就是一件很麻烦的事情.请注意,我说的独立公网IP并不是说一定要静态公网IP.拨号上网动态IP也不一定不可以.我们要的就是网关出口一定要是公网IP,假如你的网关路由器WAN口是一个内网IP肯定不行.说明一点,ipv4 的内网IP 保留范围: Class A 10.0.0.0-10.255.255.255.Class B 172.16.0.0-172.31.255.255.Class C 192.168.0.0-192.168.

网络通: 免费一键内网穿透 方便配置

越来越多的用户没有自己的独立公网IP,在发布一些应用或者网站到外网的时候就是一件很麻烦的事情.请注意,我说的独立公网 IP并不是说一定要静态公网IP.拨号上网动态IP也不一定不可以.我们要的就是网关出口一定要是公网IP,假如你的网关路由器WAN 口是一个内网IP肯定不行.说明一点,ipv4 的内网IP 保留范围: Class A 10.0.0.0-10.255.255.255.Class B 172.16.0.0- 172.31.255.255.Class C 192.168.0.0-192.1

AUTOSSH设置ssh隧道,实现反向代理访问内网主机

内网主机上配置: autossh -M 5678 -CNR 1234:localhost:22 [email protected]123.207.121.121 可以实现将访问主机123.207.121.121的1234端口的数据,通过隧道转发到内网主机的22端口. 外网主机上配置: /etc/ssh/sshd_config 加入 GatewayPorts yes sudo service sshd restart 在外网主机上测试: ssh [email protected] -p 1234

两步建立 ssh 反向隧道

因为需要在寝室访问实验室的内部网络,刚好自己购买了阿里云,因此,可以远端干活了,mark下方法: 第一步:在内网的服务器上,使用ssh 命令建立反向隧道 ssh -fNR port:localhost:22 [email protected] -f 表示后台执行 -N 表示不执行任何命令 -R 建立反向隧道 port 你可以指定任何端口,这个只要没有被占用即可 第二步:登录你自己的服务器,登录进去之后,使用如下命令: ssh localhost -p port -p 后面跟的port(端口)需要