在 Ubuntu 笔记本电脑上从启动时创建安全隧道的可靠方法?

在 Ubuntu 笔记本电脑上从启动时创建安全隧道的可靠方法?

我正在寻找一种可靠的方法来在笔记本电脑启动时启动安全隧道。

引导过程的其他部分不需要此隧道,但用户在后续任何时候都可能需要它。它应该“正常工作”,用户不必监视和修复它。

安全隧道将从绑定到远程服务器上的本地主机(在本例中为 redis 数据库)的不安全应用程序“拉入端口”到 ubuntu 笔记本电脑。

例子:

远程服务器:example.net

要转发的远程端口:6379,仅绑定到 example.net 的本地主机

远程用户:[电子邮件保护]

密钥文件: [电子邮件保护]已授权没有密码的 ssh 密钥对,一个密钥存储在服务器上的 authorized_keys 中,另一个密钥存储在笔记本电脑上的 /root/moleKey.rsa 中

这在笔记本电脑的终端窗口内有效:

$ sudo su
...
# ssh -i /root/moleKey.rsa -L 16379:localhost:6379 [email protected] -N &
# exit
$ telnet localhost 16379
(works fine)
^C

所以我尝试把

ssh -i /root/moleKey.rsa -L 16379:localhost:6379 [email protected] -N &

进入 /etc/rc.local

但这并不可靠,当需要隧道时,ssh 进程消失了,我在系统日志或消息中找不到任何错误行

有没有更可靠的方法在启动时启动安全隧道,或者是否有一个管理器可以根据需要重新启动安全隧道?

答案1

我也遇到了同样的问题,/etc/rc.local重启后无法继续使用

Upstart 是一个很好的解决方案,它对我有用:

# location: /etc/init/tunnel.conf 
description "persistent ssh tunnel through reboots"
author "morgan mcdaris <[email protected]>"

start on (local-filesystems and net-device-up IFACE=eth0)
stop on runlevel [016]

respawn
respawn limit 5 60

script
  exec su LOCAL_USERNAME -c "ssh -N -R 4040:localhost:22 -i /home/LOCAL_USERNAME/.ssh/id_rsa REMOTE_USERNAME@REMOTE_MACHINE_IP"
end script

post-start script
   PID=`status tunnel | egrep -oi '([0-9]+)$' | head -n1`
   echo $PID > /var/run/tunnel.pid
end script

post-stop script
    rm -f /var/run/tunnel.pid
end script

您需要输入以下值: LOCAL_USERNAME REMOTE_USERNAME REMOTE_MACHINE_IP

之后,您可以通过重新启动或以下方式启动它:

$ sudo start tunnel

如果你想做一些监控工作,启动后脚本会提供一个 pid 文件

答案2

对于 ubuntu 11.10+,包“gstm”可以提供一种更简单的方式来设置隧道。

http://web.archive.org/web/20150318153045/http://linuxers.org/article/manage-your-ssh-tunnel-redirects-graphically-using-gnome-ssh-tunnel-manager(原链接现已失效)

相关内容