autossh -ND 在 Ubuntu 启动

Fai*_*sal 5 server ssh

我在远程服务器上设置了无密钥登录。我使用远程服务器对我的数据进行隧道传输。我希望我的本地系统在启动时自动 ssh 进入远程服务器。

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

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

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

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

Rma*_*ano 3

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

#! /bin/bash -x
#
while :; do 
         ssh -R 2222:localhost:22 remoteserver sleep 86400
         sleep 10
done
Run Code Online (Sandbox Code Playgroud)

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

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

su -l youruser -c /home/youruser/bin/infinite_ssh &
Run Code Online (Sandbox Code Playgroud)

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


脚注:

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

  • 我授予了执行权限,现在它的工作正如我所愿!我认为从 /etc/ 目录运行的命令需要 root 访问权限,这就是它抛出该错误的原因。我只是一个初学者。非常感谢你的帮助。 (2认同)