SSH搭建反向隧道

一、起因:

最近因为疫情在上网课的时候,我同学linux系统碰到了问题,要我帮他看下。我原本是通过一个QQ远程桌面连过去,但是通过QQ桌面无法控制他虚拟机上的Linux。所以ssh过去是最好的方法,不过他的电脑跟我不在一个局域网,又是虚拟机,要怎么连过去呢?

  • 客户端(内网主机)通过ssh连接公网服务器(如阿里云服务器)时,称为正向隧道;
  • 公网服务器(例如阿里云服务器)通过ssh连接客户端(内网主机)时,称为反向隧道

二、搭建方法:

配置思路:在 A 机器(外网主机)上做到 B机器 (内网主机)的反向代理;在 B 机器上做正向代理本地端口转发。

1、首先我已经有了一个公网服务器,然后使用公网服务器,通过ssh命令建立反向隧道。

2、在客户端(内网主机)执行一条命令即可建立反向隧道:

ssh -NfR 5007:localhost:22 user@39.107.244.xxx

其中-N表示不执行命令,只转发;-f表示后台运行;-R表示反向隧道;5007:localhost:22表示监听服务器的5007端口,所有包转发到本地的22端口;39.107.244.xxx为公网服务器IP

然后会提示输入外网主机的密码

通过ssh的5007端口连接外网主机,就可以代理到内网主机,外网主机执行下面命令连接

ssh localhost -p 5007

三、改进:

到此为止,我们已经可以通过外网主机作为桥梁实现对内网主机的ssh访问,但是维持ssh的时间是有限的,一段时间没有数据传输,外网主机和内网主机的连接会断开。解决这个问题,可通过autossh实现断开重连。使用autossh之前,必须确保该客户端与服务器连接使用了无密码的密钥对登陆

1、配置免密登录:请移步到配置SSH免密登陆

2、使用下面命令进行连接

autossh -M 5555 -NfR 5007:localhost:22 user@39.107.244.xx

其中-M 5555,表示通过5555端口监听连接状态,有问题就重连。

四、可能出现的错误:Permission denied, please try again.

问题原因:服务端SSH 服务默认配置禁止root用户登录策略。

解决方法:

1、通过 cat  /etc/ssh/sshd_config 查看是否包含类似如下配置: #PermitRootLogin no

2、将#PermitRootLogin no 改为 PermitRootLogin yes

3、使用如下指令重启 SSH 服务: service sshd restart

解决了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值