1

Когда я запускаю xsession, я настраиваю свой SSH-туннель на свой VPS.

Вот скрипт запускается при входе в систему:

matt@HY731AA:~$ more dotfiles/startssh.sh 
#!/bin/sh

ssh-add ~/.ssh/id_rsa
screen -dmS ssh /bin/bash -c ~/dotfiles/keeptunnel.bash
exit

Подскажите ввести ключ и вуаля терминал закроется ..

А вот и keeptunnel.bash

matt@HY731AA:~$ more dotfiles/keeptunnel.bash 
#!/bin/bash

while [ true ]; 
  do    /usr/bin/ssh lin1tunnels > /home/matt/lin1tunnel.log 2>&1 
  sleep 0.4   
  done;

При входе в систему кажется, что все работает, туннель настроен, однако я оставляю свой компьютер на 24/7 из-за различных приостановок / отключений и т.д. Проблема в том, что иногда SSH-туннель не работает, поэтому я полагаю, что он просто переподключается или интернет / сервер не работает, однако выполнение списка экранов показывает, что экранированный сеанс (Dead???) и на экран-стереть.

Чего я не могу понять, так это того, что в keeptunnels не существует никакого способа, которым экран мог бы выйти? У меня есть ConnectTimeout 8 и ServerAliveInterval 5 в .ssh/config для lin1tunnels, однако я сомневаюсь, что это источник проблемы, поскольку экранированный сеанс мертв.

Идеи того, почему умирает экранированный сеанс?

1 ответ1

1

"Мертвая" экранная сессия обычно означает, что процесс экранного сервера завершился сбоем. Сообщает ли dmesg или /var/log/syslog о любых ошибках segfault или о нехватке памяти?

Вы можете заменить экран на tmux или dtach, или даже полностью удалить экран, просто используя ~/dotfiles/keeptunnel.bash & в вашем startssh.sh .


... на самом деле оба сценария могут быть объединены:

#!/bin/sh
ssh-add ~/.ssh/id_rsa
while true; do
    ssh -v -N lin1tunnels
    sleep 0.4
done > ~/lin1tunnel.log 2>&1 &

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