SSH 端口转发,自动重新连接,启动时执行脚本

SSH 端口转发,自动重新连接,启动时执行脚本

简而言之,每次我的电脑启动时,我都想启动一个 ssh 端口转发连接,如果连接断开,它将重新连接到服务器。电脑是 Debian Wheezy x64。

初始且成功的连接可以按如下方式进行:

screen -dmS autossh autossh -M 29000 -N -v -p 22 -l user -i /path/to/.ssh/id_rsa -L port:my-computer:port my-server.com

如何让它在启动时运行?(最好由用户而不是 root 用户运行)。以下是我目前在启动时启动程序的方法:

rc.local 调用我的启动脚本如下:

su -c "/home/username/scripts/startup" username

当前,/home/username/scripts/startup 包含以下内容:

screen -dmS program1 python my-python-program
screen -dmS program2 python my-python-program2
screen -dmS autossh autossh -M 29000 -N -v -p 22 -l user -i /path/to/.ssh/id_rsa -L port:my-computer:port my-server.com

启动后,所有三个程序似乎都在运行(通过 list screen -ls)。程序 1 和程序 2 没有问题。但是,autossh 实际上并没有转发端口。

我运行的成功连接与启动时运行的不成功连接之间的区别在于,成功的连接有以下行:

debug1: channel 4: free: direct-tcpip: listening port 8082 for 192.168.1.104 port 80, connect from ::1 port 59681, 
nchannels 5

当连接失败时,继续尝试如下:

debug1: Connection to port 8082 forwarding to 192.168.1.104 port 80 requested.
debug1: channel 4: new [direct-tcpip]
debug1: Connection to port 8082 forwarding to 192.168.1.104 port 80 requested.
debug1: channel 5: new [direct-tcpip]
debug1: Connection to port 8082 forwarding to 192.168.1.104 port 80 requested.
debug1: channel 6: new [direct-tcpip]
debug1: Connection to port 8082 forwarding to 192.168.1.104 port 80 requested.
debug1: channel 7: new [direct-tcpip]
debug1: Connection to port 8082 forwarding to 192.168.1.104 port 80 requested.
debug1: channel 8: new [direct-tcpip]

知道哪里出了问题吗?为什么我手动运行程序时可以正常工作,但在启动脚本中却不行?

答案1

查看程序自动SSH用于自动重新连接。屏幕不会出错,因为你总是为这些命令指定外部命令和标志屏幕特定标志。

相关内容