使用传出SSH接收传入的SSH

我的ISP不允许我拥有静态IP地址。 因此我无法在家用机器上远程SSH。 有没有办法可以从我的家用机器连接到服务器,从我的远程笔记本电脑SSH连接到服务器并桥接这两个连接?

干杯!

我只是从这里复制/粘贴(略微修改)部分@b_laoshi的答案:

在这种情况下,您可以从ComputerA – > ComputerB配置ssh隧道,以便它也可以隧道反向连接

建立ssh连接ComputerA – > ComputerB时,使用-R选项以下列方式执行此操作:

 ssh ComputerBUser@ComputerB -R 2222:localhost:22 

其中ComputerBUser是正在进行身份validation的ComputerB上的帐户的用户名,而2222是ComputerB上的空闲端口。 我们将使用此端口从ComputerB 反向隧道返回ComputerA。

现在从ComputerB ,您可以按以下方式发出scp命令,以从ComputerB – > ComputerA复制文件,其中ComputerAUser是您在ComputerAUser上的用户名:

 scp -P 2222 /path/to/file/on/ComputerB ComputerAUser@localhost:/path/to/drop/file/on/computerA 

要么

 ssh -p 2222 ComputerAUser@localhost 

这里发生了什么事?

看起来我们只是告诉ComputerB将文件发回给自己,因为我们传递的是localhost而不是ComputerA。 我们确实告诉scp将文件传递回ComputerB,但是传送到端口2222.计算机B上端口2222的所有连接都转发到ComputerA上的端口22(默认ssh端口)。

因此,通过在现有ssh连接上向后隧道,计算机A在NAT防火墙后面并不重要。

编辑:要允许建立SSH隧道而不需要活动终端窗口,可以添加-N参数(在-R之前)(如@steeldriver提供的链接中所指出的)。 此外,如果想要自动设置永久背景ssh连接,Erik Torgesta的精彩文章为您提供了所有必要的步骤。

也许我在自己的服务器上设置了一种更简单的方法。

我让我的服务器每隔15分钟检查一次外部IP地址(检查之间的时间可由cron定制)然后将其与最新的IP地址进行比较,如果它已经更改,它会通过电子邮件向我发送新的IP地址。

我现在正在打电话,但是如果你愿意,可以发送设置,除了服务器无法到达ip检查器的奇怪的虚假电子邮件外,它真的非常简单和可靠。

更新 – 这是脚本。 您显然需要运行正常运行的电子邮件帐户,我个人已将其设置为使用本指南从专用的Gmail帐户发送

 #bin/sh IPADDRESS=$(curl https://wtfismyip.com/text) if [ "$IPADDRESS" != "$(cat /home/will/scripts/.current_ip)" ] then dt=$(date) echo "Your new IP address as of ${dt} is ${IPADDRESS} \r \r FTB" | mail -s "IP address change" emailforupdates@email.com echo "$IPADDRESS" >| /home/will/scripts/.current_ip echo "$dt $IPADDRESS" >> /home/will/scripts/.iphistory fi 

我首先在您要存储文件的目录中touch .current_ip && touch .iphistory 。 它具有保留IP更改记录的附加优势,但实际上我没有发现它有多大用处。

将脚本设置为可以随时作为cron作业运行。 它不是非常耗费资源。