Script para iniciar a conexão ssh para o encaminhamento de porta e, em seguida, executar o visualizador vnc no computador do cliente

2

Eu gostaria de escrever um script que obtém como argumento um ip de computador local (na rede do servidor ssh) e encaminha a porta 5900 no computador do cliente para esse ip: 5900 na rede do servidor.

Logo após a conexão ser estabelecida, eu gostaria de executar o visualizador vnc e conectar-me a esse host remoto, usando a porta encaminhada.

O script que eu criei é o seguinte:

#/bin/bash
ssh -L 5900::5900 user@server-ip
vncviewer 127.0.0.1:5900

E deve ser usado assim:
Digamos que temos na rede do servidor um computador com ip 10.0.0.10, então executando o comando:

vnc-ssh-script 10.0.0.10

no meu computador (cliente) em casa é suposto abrir o visualizador vnc e permitir-me controlar o computador da rede local 10.0.0.10 (que executa o vc server ofcourse).

O único problema é que depois que a primeira linha do script é executada (ssh -L 5900: $ {1}: 5900 user @ server-ip), a conexão é estabelecida e o próximo comando (vncviewer 127.0.0.1:5900 ) não será executado até que a sessão do ssh seja encerrada ...

Minha pergunta é como posso estabelecer a tarefa que quero?

Eu já tentei anexar '& amp;' depois do comando ssh, mas quando executo o script, recebo a mensagem:
"Psedo-terminal não será alocado porque stdin não é um terminal."
e parece que o ssh é automaticamente fechado (e mesmo se funcionasse, eu teria uma indicação de que ele foi bem sucedido antes de executar o comando vncviewer).

    
por rboy 01.08.2013 / 11:26

1 resposta

0

Você precisa manter a conexão SSH em segundo plano. O e comercial no final do comando faz isso e eu estou passando o sinalizador N também para parar um shell rodando no final remoto (economiza um punhado de recursos e impede que o SSH fique estropiado sobre ter um console conectado):

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

Eu costumava fazer algo semelhante, mas executar o x11vnc no computador remoto, sob demanda. Isso teve o efeito colateral adicional de que ele estava ativo enquanto o x11vnc estava rodando ... E isso termina depois da primeira desconexão (desejável!):

#/bin/bash
ssh -L 5900::5900 user@ "x11vnc" &
vncviewer 127.0.0.1:5900
    
por Oli 01.08.2013 / 11:31