SSH туннель и Rdesktop в одну строку

Для удаленного доступа к машине с Windows мне нужно туннелировать через мой сервер Ubuntu. Для настройки туннеля у меня есть

ssh -l root -C -L 9999:windowsmachine:23389 myserver

Затем я должен открыть другую консоль и запустить

rdesktop -u user -password -f localhost:9999

Как я могу объединить их в одну команду или скрипт?

1 ответ

(Отказ от ответственности: см. Комментарии для более эффективного решения.)

Это сложно по ряду причин:

  • ssh должен работать на переднем плане, чтобы держать соединение открытым. Это затрудняет выполнение этого в пределах одного экземпляра оболочки, потому что вторая команда должна выполняться параллельно, поскольку она находится на переднем плане.
  • Вы не можете проверить статус возврата ssh команда, потому что к тому времени соединение будет закрыто. Это означает, что команда resktop будет запускаться независимо от того, прошла ли аутентификация ssh успешно.
  • Для rdesktop Чтобы команда не была интерактивной, необходимо ввести пароль в командной строке. Хранить пароль в скрипте - плохая идея.

Попробуйте что-то вроде этого:

#!/bin/bash

# Request password, no echo
read -s RDP_PW

# Insert password validation here (i.e. make sure we got input)

# Execute sleep+rdesktop in a background subshell, redirect STDOUT to /dev/null.
( sleep 5; rdesktop -u user -p$RDP_PW -f localhost:9999 ) >/dev/null &

# Run the ssh command. We have 5 seconds establish the tunnel.
ssh -l root -C -L 9999:windowsmachine:23389 myserver

Настройте оператор сна по мере необходимости. Вы можете удалить перенаправление /dev/null, пока не убедитесь, что это работает. Вы также можете перенаправить STDERR.

Лучший подход основан на терминальной программе, которую вы используете в X, или на том, знакомы ли вы с терминальным мультиплексором. Если ваша терминальная программа предоставляет вам способ вызвать команду в новой вкладке, введите префикс ssh с соответствующей командой для этого. Если вы идете по маршруту мультиплексора, используйте синтаксис для вызова ssh в новом окне мультиплексора. Работа с паролями подсказок от ssh в обоих случаях это зависит от вас.

Другие вопросы по тегам