Мне нужно настроить пару ssh-туннелей из сценария оболочки. Я попытался запустить их как задачи BG, используя:
#!/bin/sh
ssh -L 3000:server1:5029 me@server2 &
ssh -L 3001:server3:3306 me@server2 &
но туннели, кажется, не работают правильно, когда я запускаю их таким образом.
Они работают нормально, когда я вручную настраиваю их на их собственных вкладках, поэтому моя следующая идея состоит в том, чтобы скрипт открывал новые вкладки в терминале и запускал там команды в качестве процессов переднего плана.
Примечание: этот вопрос изначально был «Как запустить новую вкладку терминала из оболочки, а затем запустить в ней команду?», Но я получил два ответа о работе с туннелями. Что касается вопроса «открытия оболочки», я нашел его в SuperUser , который будет работать, хотя новые вкладки на заднем плане предпочтительнее открываемых окон переднего плана.
источник
Ответы:
Технически это не ответ на заданный вопрос, а скорее ответ на вашу проблему, как описано. Команда ssh имеет два параметра, которые могут быть вам полезны:
приказывает ssh достаточно долго находиться на переднем плане, чтобы запрашивать необходимые пароли, а затем переключаться в фоновый режим, не выполняя удаленную команду, а просто обрабатывая туннель.
Если вы действительно хотите, чтобы это отображалось на вкладке, то вам может потребоваться другое решение.
источник
jobs
ниps
список ручек для них ....-f
и фоновый процесс через&
в конце, вы можете получить PID$!
как дескриптор, чтобы позже убить туннельный процесс в вашем скрипте.Я бы предложил просто интегрировать ваши туннели в ваше соединение «один для чего угодно». Вы можете сделать это легко, добавив соответствующие записи в ваш
~/.ssh/config
файл:Затем вы можете просто войти в систему, выполнив:
Туннели должны подойти и начать работать, оставляя вам один экземпляр SSH, в котором можно делать «что угодно». Если вам нужно открыть второе соединение с
server2
, вы можете получить сообщение об ошибке:Это не повредит ничему, кроме ваших глаз. Вы также можете настроить эти пересылки для нескольких серверов, добавив аналогичные строки для других серверов, и все это произойдет автоматически.
источник