У меня есть удаленный хост за бастионом, на который мне нужно настроить переадресацию портов, я пришел к следующему:
bastion=xyz.com
user=$( whoami )
function doSSH () {
ssh $user@$bastion -t -A \
-L 5900:127.0.0.1:5900 \
ssh $user@$1 -t -A \
-L 5900:127.0.0.1:5900 \
'/opt/enableVNC && while [ 1 ]; do echo "Keeping forwards alive..." && sleep 60; done'
}
Проблема, с которой я сталкиваюсь, заключается в том, что после SSHing к удаленному узлу, я должен запустить скрипт, который включил VNC-сервер на узле, к сожалению, этот скрипт вскоре возвращает 0
когда сервер запущен и работает. Сценарий, который я вызываю, не является блокирующим сценарием, и сессия ssh заканчивается, хотя я установил порт для переадресации.
$ doSSH node1
user@xyz.com's password:
user@node1's password:
VNC is now Enabled
Listening on 127.0.0.1:5900
Connection to node1 closed.
Keeping forwards alive...
Keeping forwards alive...
Кажется, что соединение со вторым хостом разрывается сразу после возвращения первой части команды, и я не могу оставить соединение открытым для второго хоста.
Как я могу сохранить мой порт установленным после выполнения вызова, который немедленно возвращается?