Скрипт для инициации ssh-соединения для переадресации портов, а затем запуска vnc viewer на клиентском компьютере

Я хотел бы написать скрипт, который в качестве аргумента получает IP-адрес локального компьютера (в сети сервера ssh) и перенаправляет порт 5900 на компьютере клиента на этот IP: 5900 в сети сервера.

Сразу после установления соединения я бы хотел запустить vnc viewer и подключиться к этому удаленному хосту, используя перенаправленный порт.

Сценарий, который я придумал, выглядит следующим образом:

#/bin/bash
ssh -L 5900:${1}:5900 user@server-ip
vncviewer 127.0.0.1:5900

И его следует использовать так:
Допустим, в сети сервера есть компьютер с ip 10.0.0.10 Таким образом, выполнение команды:

vnc-ssh-script 10.0.0.10

на моем домашнем (клиентском) компьютере должно открыть средство просмотра vnc и позволить мне управлять компьютером 10.0.0.10 локальной сети (на котором работает сервер vnc).

Единственная проблема заключается в том, что после выполнения первой строки сценария (ssh -L 5900: $ {1}: 5900 user @ server-ip) соединение устанавливается и следующая команда (vncviewer 127.0.0.1:5900) ) не будет выполняться, пока сессия ssh не будет закрыта ...

У меня вопрос: как мне установить задачу, которую я хочу?

Я уже пытался добавить '& amp;' после команды ssh, но затем, когда я выполняю сценарий, я получаю сообщение:
«Psedo-терминал не будет выделен, потому что stdin не является терминалом».
и кажется, что ssh автоматически закрывается (и даже если бы он работал, у меня было бы указание на то, что он преуспел перед выполнением команды vncviewer).

2
задан 1 August 2013 в 13:26

1 ответ

Вы должны вставить SSH-соединение в фоновом режиме. Амперсанд в конце команды делает это, и я также передаю флаг N, чтобы остановить работу оболочки на удаленном конце (экономит кучу ресурсов и останавливает SSH, не позволяющий подключить консоль):

#/bin/bash
ssh -NL 5900:${1}:5900 user@${1} &
sleep 1
vncviewer 127.0.0.1:5900

Раньше я делал что-то подобное, но по требованию запускал x11vnc на удаленном компьютере. Это имело дополнительный побочный эффект: он работал только во время работы x11vnc ... И он завершается после первого отключения (желательно!):

#/bin/bash
ssh -L 5900:${1}:5900 user@${1} "x11vnc" &
vncviewer 127.0.0.1:5900
0
ответ дан 1 August 2013 в 13:26

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

Похожие вопросы: