Eu tenho um host remoto atrás de um bastião que eu preciso configurar 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, eu devo executar um script que ativou o servidor VNC no nó, infelizmente, esse script retorna em breve 0
quando o servidor estiver em funcionamento. O script que estou chamando não é um script de bloqueio, e a sessão ssh chega ao fim, embora 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?
linux
bash
ssh
port-forwarding
Matt Clark
fonte
fonte
ProxyCommand
e IO encaminhamento com-W
? É muito menos confuso e muito mais seguro, se for permitido pelo bastião.Respostas:
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? Em caso afirmativo, você poderia criar um script
E execute o script em seu
ssh
sessão.fonte
Que tal esse pedaço feio de código:
fonte