Você precisa usar -f
para que a conexão entre em segundo plano quando for estabelecida. Então você não precisará do &
:
ssh -Nf -L xxx:xxx user@ip
e o processamento deve entrar no seu bash
.
Atualmente, estou escrevendo um script Bash que cria um túnel SSH. Feito isso, gostaria que o script abrisse um novo shell interativo (!) Local para que eu possa trabalhar no meu sistema com o túnel SSH aberto.
Depois de digitar exit
, o shell local deverá ser fechado e o script original continuará a ser executado.
Minha abordagem atual basicamente se parece com isso:
#!/usr/bin/env bash
set -e
ssh -N user@ip -L xxx:xxx &
SSH_CONNECTION=${!}
trap "kill ${SSH_CONNECTION}" ERR
sleep 3
bash -i
kill ${SSH_CONNECTION}
Até agora, tudo funciona - exceto executar o shell local. Eu realmente obtenho um shell, e posso até mesmo digitar nele, mas nada acontece quando eu bato <Return>
.
Alguma ideia do que estou fazendo errado?
Você precisa usar -f
para que a conexão entre em segundo plano quando for estabelecida. Então você não precisará do &
:
ssh -Nf -L xxx:xxx user@ip
e o processamento deve entrar no seu bash
.