Я запускаю ssh server -L 3392:192.168.1.138:3389
в одном окне терминала, затем запускаю rdesktop 127.0.0.1:3392
в другом для подключения к машине Windows через туннель SSH. Как я могу объединить это в одну команду, которую я могу запустить из ярлыка Gnome или что-то?
3 ответа
В качестве улучшения вышесказанного вам не нужно убивать SSH PID в конце.
ssh server -fL 3392:192.168.1.138:3389 sleep 5
rdesktop 127.0.0.1:3392
Сказанное выше скажет ssh запустить sleep 5
на удаленном сервере и перейти в фоновый режим (-f). Это позволит соединению оставаться открытым в течение 5 секунд, что достаточно для запуска команды rdesktop. Переадресация порта останется на месте, пока проходит трафик, поэтому, как только вы выйдете из rdesktop, ssh автоматически прекратит работу.
Я предполагаю, что у вас установлен пароль SSH без пароля, чтобы ssh не запрашивал пароль.
Вы можете использовать скрипт bash следующим образом:
#!/bin/bash
ssh server -L 3392:192.168.1.138:3389 -N &
SSH_PID=$!
sleep 5 # wait for the connection to establish
rdesktop 127.0.0.1:3392
kill $SSH_PID
Здесь я делаю предположение, что rdesktop не разветвляется и не возвращается, пока программа не закончится. Если это произойдет, соединение SSH немедленно прекратит работу. Если это так, вам нужно будет следить за запущенными процессами rdesktop, зацикливаться / переходить в спящий режим до тех пор, пока все они не будут отключены, а затем закрывать соединение SSH.
Мой "мужчина SSH" говорит:
ssh [a bunch of options] [user@]hostname [command]
Вы можете просто использовать команду, но вы, кажется, используете что-то другое, потому что ваш синтаксис не соответствует моему. В любом случае проверьте в man-странице должно быть что-то, чтобы запустить команду.