SSH double hop com porta em frente e comando remoto que retorna imediatamente

0

Eu tenho um host remoto atrás de um bastião que eu preciso configurar porta para a frente, eu vim com o seguinte:

bastion=xyz.com
user=$( whoami )

function doSSH () {

    ssh $user@$bastion -t -A \
        -L 5900:127.0.0.1:5900 \
        ssh $user@$1 -t -A \
            -L 5900:127.0.0.1:5900 \
            '/opt/enableVNC && while [ 1 ]; do echo "Keeping forwards alive..." && sleep 60; done'
}

O problema que estou enfrentando é que, após o SSHing para o nó remoto, devo executar um script que ativou o servidor VNC no nó; infelizmente, esse script retornará em breve 0 quando o servidor estiver em execução. O script que estou chamando não é um script de bloqueio, e a sessão ssh chega ao fim, mesmo que eu tenha estabelecido o encaminhamento de porta.

$ doSSH node1
[email protected]'s password:
user@node1's password:
  VNC is now Enabled
  Listening on 127.0.0.1:5900
Connection to node1 closed.
Keeping forwards alive...
Keeping forwards alive...

Parece que a conexão com o segundo host é interrompida imediatamente após a primeira parte do comando retornar, e eu não posso manter a conexão aberta para o segundo host.

Como posso manter minha porta estabelecida depois de fazer uma chamada que retorna imediatamente?

    
por Matt Clark 19.07.2017 / 06:46

2 respostas

0

Estou assumindo que você usou aspas ao executar o comando (caso contrário, o loop while será executado localmente). Você consegue criar um script no host remoto? Se assim for, você poderia criar um script

#!/usr/bin/env bash
/opt/enableVNC && while [ 1 ]; do sleep 1; done

E execute o script na sua sessão ssh .

    
por 19.07.2017 / 07:00
0

Que tal este pedaço de código feio:

bastion=xyz.com
user=$( whoami )

function doSSH () {

    ssh $user@$bastion -t -A \
        -L 5900:127.0.0.1:5900 \
        'bash -c "ssh '$user'@'$1' -t -A \
            -L 5900:127.0.0.1:5900 \
            bash -c \"/opt/enableVNC  && while [ 1 ]; do echo Keeping forwards alive... && sleep 60; done\""'
}
    
por 19.07.2017 / 07:42