Ubuntu 启动时 autossh -ND

Ubuntu 启动时 autossh -ND

我在远程服务器上设置了无密钥登录。我使用远程服务器来传输我的数据。我希望我的本地系统在启动时自动通过 ssh 连接到远程服务器。

我尝试了以下链接中建议的解决方案,但没有一个对我有用:

  1. 如何使用 upstart 启动 SSH 隧道
  2. 如何让脚本在 Ubuntu 机器启动时运行?
  3. 使用 Ubuntu Upstart 进行 Autossh

我按照那些帖子中提到的做了。该autossh命令应该打开一个端口(9090在我的情况下),以便我可以隧道传输我的流量。应用每种方法后,我重新启动了 PC,并在重新启动后运行nmap以查看特定端口是否正在监听。遗憾的是,在每种情况下,端口仍然关闭,因此每次重新启动 PC 时我都必须在终端上手动输入命令。

有人能帮助我吗?请注意,远程服务器和我的本地系统都运行 Ubuntu 14.04,并且本地系统没有安装 GUI。

答案1

我将这个小脚本保存在~/bin/infinite_ssh(1):

#! /bin/bash -x
#
while :; do 
         ssh -R 2222:localhost:22 remoteserver sleep 86400
         sleep 10
done

这是连接到remoteserver并创建一个反向隧道,这样在远程服务器中我可以使用 来 ssh 我的桌面ssh -p 2222 localhost。显然,您的应用程序可能会有所不同。remoteserver中定义了 ,~/ssh/config这样您就可以无需密码登录,并且有KeepAlive on选项。

然后你可以从中调用/etc/rc.local

su -l youruser -c /home/youruser/bin/infinite_ssh &

这样它在启动时在后台以您的用户身份启动。


脚注:

(1)显然你需要赋予脚本执行权限chmod a+x ~/bin/infinite_ssh......

相关内容