【译】Persistent reverse (NAT bypassing) SSH tunnel access with autossh

情况:您所在的受限制网络(公司,酒店,医院)中有一个“服务器”,您希望从该网络外部访问该服务器。 您无法将端口转发到该计算机,但您可以在外部ssh(到您自己的服务器)。 本教程解决了这个问题。

您需要另一台服务器,您可以使用反向隧道为其设置持久ssh连接。 然后,如果您需要访问该计算机,请将ssh插入另一台服务器,然后从那里通过隧道访问受限制的计算机。

确保您有权从管理员处执行此操作。 他们通常不喜欢防火墙/安全漏洞。 他们没有任何理由阻止它。

命名约定:

受限制的机器:限制网络中间人的机器:受限制的机器设置隧道的机器,以及从中访问受限制的服务器的机器

安装工具

我们将使用autossh。 这是在debian / ubuntu存储库中。 确保您还安装了openssh服务器。

执行:受限制的机器。

sudo apt-get install autossh ssh 

创建你的ssh-key。

执行:受限制的机器。

 ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): */root/.ssh/nopwd* Enter passphrase (empty for no passphrase): *leave empty* Enter same passphrase again: *leave empty* 

将密钥复制到中间人机器

执行:受限制的机器。

 ssh-copy-id -i .ssh/nopwd.pub "-p 2222 remy@middleman" 

(用您的用户名和中间人ssh服务器替换remy @ middleman。还要注意如何在ssh-copy-id中提供自定义端口。)

使用autossh测试连接

执行:受限制的机器

 autossh -M 10984 -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /root/.ssh/nopwd -R 6666:localhost:22 remy@middleman -p 2222 

“选项说明:

  • -M 10984:autossh监控端口。
  • -o“PubkeyAuthentication = yes”:使用ssh-keys而不是密码进行身份验证。
  • -o“PasswordAuthentication = no”:显式禁用密码验证。
  • -i /root/.ssh/nopwd:要使用的ssh密钥的位置。
  • -R 6666:localhost:22:反向隧道。 将主机中间件上6666端口上的所有流量转发到主机受限计算机上的端口22。
  • remy @ middleman -p 2222:ssh用户remy,ssh主机中间人,ssh端口2222

如果一切顺利,您应该登录中间人主机而不要求输入密码。 如果要添加ssh密钥,可能会遇到问题。 对此说“是”。

如果进展不顺利,请检查ssh密钥的权限(应为600),并确保autossh命令中的值正确。

SSH回到受限主机中

从另一台机器(最好在受限制的网络之外)ssh进入中间人主机。

执行:其他机器

 ssh -p 2222 remy@middleman 

从中间人,ssh通过我们创建的反向隧道进入受限制的主机:

执行于:中间人

 ssh -p 6666 remy@127.0.0.1 

如果一切顺利,您应该看到登录受限制机器的提示。 输入您的密码然后去。 如果这很顺利,你可以继续。 如果这不起作用,请检查命令和ssh配置中的值。 还要确保您已正确执行上述步骤。

启动时启用隧道

我们将编辑/etc/rc.local文件。 此脚本通常不执行任何操作,但会在引导时执行。 如果您在此脚本中出现任何错误,您的计算机可能无法启动,因此请确保正确执行此操作。

执行:受限制的机器

 sudo nano /etc/rc.local 

添加(并更改)以下行

 autossh -M 10984 -N -f -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /root/.ssh/nopwd -R 6666:localhost:22 remy@middleman -p 2222 & 

我们在这个命令中有三个新东西:

  • -N:不要在中间人机器上执行命令
  • -f:掉进后台
  • &:执行此命令但不等待输出或退出代码。 如果未添加,则计算机可能会在引导时挂起。

保存文件,并使其可执行:

执行:受限制的机器

 sudo chmod +x /etc/rc.local 

并测试它:

执行:受限制的机器

 sudo /etc/rc.local 

如果你在没有任何输出的情况下得到正常的承诺,那么你已经做到了正确.z

转发网站,而不是ssh

您可能希望转发受限主机上的网站。 按照上面的教程,但更改autossh命令:

 autossh -M 10984 -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /root/.ssh/nopwd -R 8888:localhost:80 remy@middleman -p 2222 
  • -R 8888:localhost:80:这会将主机中间人上的所有流量转发到主机受限主机上的端口80。 (80号港口=网站)。

其他主机在受限网络内

您还可以从网络中的其他受限主机转发端口:

 autossh -M 10984 -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /root/.ssh/nopwd -R 7777:host2.restrictednetwork:22 remy@middleman -p 2222 

这将通过主机restrictedhost将所有流量转发到主机中间人上的端口7777到主机host2.restrictednetwork端口22。

https://raymii.org/s/tutorials/Autossh_persistent_tunnels.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值