SSH端口转发实现内网穿透

作者: 秦时的明月夜 | 来源:发表于2019-08-20 10:07 被阅读103次

我们局域网的机器能够访问外网,但是外网不能访问内网。因为内网访问互联网时候能确定外网的地址,外网却不能确定我们局域网内的具体地址。(ip地址有限)如果 我们在访问外网的时候,这个链接让他保持、不断,那么这个链接就相当于我们建了一条路,内网数据能出去,外网数据能进来,ssh也是这个方法。

使用ssh命令链接公网服务器

1、首先在外网服务器上编辑sshd的配置文件
vim  /etc/ssh/sshd_config
#将GatewayPorts 开关打开
GatewayPorts yes
重启sshd服务,使用修改生效(linux 版本不同命令可能会有差异)
systemctl restart sshd 
2、命令
ssh -NTf -R <local-host>:<local-port>:<remote -host>:<remote-port> user@host

local-host 可省略
例如:ssh -NTf -R 8888:127.0.0.1:8080 root@host
3、参数说明
-C 允许压缩数据
-f 后台运行
-N 表示只连接远程主机,不打开远程shell
-R 将端口绑定到远程服务器,反向代理
-L 将端口绑定到本地客户端,正向代理
-T 不为这个连接分配TTY
-NT 代表这个SSH连接只用来传数据,不执行远程操作

保持ssh链接不断开

通常我们使用ssh 链接服务器的时候,如果长时间不操作,这个链接是会关闭的。

方法一、设置客户端
1)用户级别的设置
    vim ~/.ssh/config(如果没有config创建一个)
2)全局设置
    /etc/ssh/ssh_config
选择其中一个就可以,添加下面参数
#每隔60秒向服务器发送一个空包
ServerAliveInterval 60
#如果超过两次没成功就断开
ServerAliveCountMax 2
#转发失败后退出,便于重建连接
ExitOnForwardFailure yes  
临时写法(推荐,不影响他人)
ssh -o ServerAliveInterval=30 root@host
ssh -NTf -R 8888:127.0.0.1:8080 root@host -o ServerAliveInterval=30 -o ServerAliveCountMax=2
方法二、设置服务器端
vim /etc/ssh/sshd_config
#每隔30秒,服务器端向客户端发送心跳
ClientAliveInterval 30
#3次心跳无响应之后,会认为Client已经断开
ClientAliveCountMax 3
方法三、使用shell脚本
touch myAutoSSH.sh
因为我设置ssh连接是rsa免密认证,所以这里逻辑就不需要密码 

ssh免密登录方法

while(1)
do
    ssh -NTR <local-host>:<local-port>:<remote -host>:<remote-port> user@host
done
保证断开后立马就能连上把-f参数去掉 否则就死循环了
方法四、使用autossh
需要下载autossh软件,操作和直接使用ssh 差不多
-M是监听端口,监听命令是否有无响应的,帮我们保持链接的
autossh -M 5678 -NTR <local-host>:<local-port>:<remote-host>:<remote-port> user@host

我不喜欢下载软件-乱七八糟的软件装的很多,也不喜欢修改配置-修改后怕影响别人使用,所以我喜欢使用客户端临时配置的方式

相关文章

  • SSH端口转发实现内网穿透

    我们局域网的机器能够访问外网,但是外网不能访问内网。因为内网访问互联网时候能确定外网的地址,外网却不能确定我们局域...

  • SSH端口转发实现内网穿透

    转载自 » 宁哥的小站[http://www.lining0806.com/] » SSH端口转发实现内网穿透[h...

  • ssh隧道用于调试

    相关阅读 SSH隧道与端口转发及内网渗透 | 个人博客 SSH隧道技术----端口转发,socket代理 | 博客...

  • ssh端口转发

    SSH Tunneling ssh端口转发,用来实现翻墙的操作。 它有几种不同的称呼:ssh端口映射,端口转发,s...

  • 利用ssh转发功能做端口映射,实现内网穿透

    场景 1台内网机N可以上网,但是没有公网ip,用户userN,需要ssh的服务端和客户端,以及autossh软件;...

  • Nodejs实现简单的TCP内网穿透

    网上关于TCP内网穿透的软件或是文章挺多的,其中通过TCP端口代理转发可以说是实现穿透最简单的方式了。注意:文章代...

  • 利用反向代理实现内网的ssh连接

    内容实现了再补 参考文章:SSH如何反向代理稳定穿透内网利用ssh反向代理以及autossh实现从外网连接内网服务器

  • Nodejs实现简单的UDP打洞(内网穿透)实验

    想实现UDP内网穿透,方法基本有两种,一种是通过服务器端口代理转发的方式,另外一种是通过UDP打洞来实现穿透。而所...

  • 搭建ssh反向隧道

    实现外网利用ssh反向隧道访问内网主机 准备 实现内网穿透都需要一台外网主机,而且是可以访问的 内网主机A IP:...

  • SSH实现端口转发

    (一) 概述 SSH协议使用加密来保护客户端和服务器之间的连接。所有用户身份验证,命令,输出和文件传输均经过加密以...

网友评论

    本文标题:SSH端口转发实现内网穿透

    本文链接:https://www.haomeiwen.com/subject/gidusctx.html