SSH隧道穿越内网访问局域网内主机

SSH隧道穿越内网访问局域网内主机

内网中的服务器一旦离开局域网就没有办法进行访问了,这里就需要一个公网可以访问到的服务器作为SSH的端口转发,我这里注册了一个阿里云的服务器作为代理服务器

一、配置代理服务器

1. 开放端口

我会用到端口10022进行转发,所以需要在阿里云上开放这个端口,进入安全-防火墙,添加一条访问规则,如下所示:
在这里插入图片描述

2. 修改SSH配置文件

编辑/etc/ssh/sshd_config文件

vim /etc/ssh/sshd_config

在sshd_config中添加一条配置,打开转发功能,如下:

GatewayPorts yes

wq保存好以后,重启ssh

systemctl restart sshd

二、配置目标主机

执行如下的命令

ssh -T -f -N -g -R :10022:127.0.0.1:22 (你的公网服务器的名称)@(你的公网服务器的地址)

这条命令的作用是:

  • 建立一条ssh连接,目标主机地址连接上代理服务器地址
  • 如果有其他ssh客户端连接到代理服务器地址的10022端口上时,则代理服务器会将这条连接转发到目标主机地址

三、通过代理服务器连接内网服务器

打开XShell,新建一个SSH连接,地址填写代理服务器的地址,然后端口填写10022(这个端口可以自己设置,只要是在可用范围内就可以),然后会提示你输入用户名和密码,这个就填写内网服务器的即可。

SSH转发命令知识点

ssh -T -f -N -g -R :10022:127.0.0.1:22 (你的公网服务器的名称)@(你的公网服务器的地址)

  • -T 不分配伪终端;
  • -f 使 ssh 进程在用户输入密码之后转入后台运行;
  • -N 不执行远程指令,即代理服务器不需执行指令,只作端口转发;
  • -g 允许代理服务器连接到本地转发端口;
  • -R 将代理服务器指定端口上的连接转发到本机端口;
  • (你的公网服务器的名称)@(你的公网服务器的地址) 表示使用代理服务器的用户来连接
  • :10022:127.0.0.1:22
    表示本机回环接口(127.0.0.1,也可使用本机其他网络接口的地址,比如以太网 IP 或 WiFi IP)的 22 端口连接到远程主机的 10022 接口,因远程主机 10022 绑定的地址为空,所以远程主机会监听其所有网络接口的 10022 端口。

如果总是掉线请尝试如下解决办法

报错:client_loop: send disconnect: Broken pipe
配置/etc/ssh/ssh_config,添加如下内容

Host *
        # 断开时重试连接的次数
        ServerAliveCountMax 5

        # 每隔5秒自动发送一个空的请求以保持连接
        ServerAliveInterval 5
        IPQoS=throughput

重启SSH
systemctl restart sshd
如果报错:
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist

另一个类似的问题:解决ssh的"Write failed: Broken pipe"问题

  1. 如果您有多台服务器,不想在每台服务器上设置,只需在客户端的 ~/.ssh/ 文件夹中添加 config 文件,并添加下面的配置:
    ServerAliveInterval 60
  2. 如果有多个人管理服务器,不想在每个客户端进行设置,只需在服务器的 /etc/ssh/sshd_config 中添加如下的配置:
    ClientAliveInterval 60
  3. 如果只想让当前的 ssh 保持连接,可以使用以下的命令:
    ssh -o ServerAliveInterval=60 user@sshserver
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要基于SSH隧道和Chrome插件SwitchyOmega访问内网机器,你可以按照以下步骤进行设置: 1. 在你的内网机器上启动SSH服务器,并确保已经正确配置了SSH登录和端口转发。 2. 在本地计算机上安装SSH客户端,比如OpenSSH(Windows上可以使用PuTTY)。 3. 使用SSH客户端创建一个SSH隧道,将本地计算机的某个端口与内网机器的某个端口进行绑定。例如,如果你希望访问内网机器的SSH服务(默认端口22),可以执行以下命令: ``` ssh -L 8888:localhost:22 username@内网机器IP ``` 这将在本地计算机的8888端口上创建一个SSH隧道,将流量转发到内网机器的SSH服务。 4. 安装Chrome浏览器插件SwitchyOmega,它可以帮助你设置指定规则的代理服务器。 5. 打开SwitchyOmega插件的选项页面,并创建一个新的情景模式(Profile),将代理服务器设置为本地计算机上创建的SSH隧道,即将代理服务器配置为`127.0.0.1:8888`。 6. 在SwitchyOmega中设置规则,将需要通过SSH隧道访问内网网址或域名配置为使用刚刚创建的情景模式。 7. 确保SwitchyOmega插件已经启用,并且选择了刚刚创建的情景模式。 现在,当你访问被配置为使用SSH隧道内网网址或域名时,Chrome浏览器将通过SSH隧道连接到内网机器,实现访问内网机器的功能。 请注意,这只是一种基于SSH隧道和SwitchyOmega插件的方法,你也可以尝试其他工具和方法来实现类似的目的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值