4

Короче говоря, каждый раз, когда мой компьютер загружается, я хотел бы установить соединение с переадресацией портов 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

После загрузки все три программы работают (по списку экранов -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 ответ1

3

Проверьте программу autossh для автоматического переподключения. Экран не испортится, потому что вы всегда указываете внешние команды и флаги для этих команд после определенных для экрана флагов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .