Encaminhamento de porta SSH sem sessão

4

Estou tentando encaminhar minha porta 8085, que é uma porta de fluxo de câmera ao vivo para um servidor http mini, para um servidor remoto.

Meu comando que estou usando é o seguinte:

ssh -R $rport:dc-bb7925e7:$camport -p 25 [email protected]

Como este comando é agora, ele encaminha a porta e eu posso ver a transmissão ao vivo no servidor remoto indo para localhost: 8085, MAS o problema é que no cliente, há uma sessão TTY aberta que impede todos os outros scripts da execução.

Então, tentei usar o ssh no plano de fundo com:

ssh -Nf -R $rport:dc-bb7925e7:$camport -p 25 [email protected]

Isso não funciona, pois parece que a conexão está fechada. O encaminhamento de porta está sendo usado em um script em que o script avalia uma condição if / then / else e, em seguida, executa para encaminhar. Encaminhar esta porta não é suposto para interromper todos os outros scripts. Ele deve simplesmente encaminhar a porta e seguir em frente, mantendo-a aberta.

O que estou fazendo errado ou existem outras bandeiras que podem ser usadas?

    
por RootWannaBe 17.10.2014 / 22:09

3 respostas

11

Em vez de basear um TTY ativo, você pode simplesmente deixar o SSH cuidar das coisas sozinho.

Minha sugestão é esta:

ssh -fNT -R $rport:dc-bb7925e7:$camport -p 25 [email protected]

As primeiras três opções são:

  -f    Requests ssh to go to background just before command execution.
  -N    Do not execute a remote command.
  -T    Disable pseudo-tty allocation.

A opção -f é a que realmente faz o pano de fundo, mas -N e -T economizarão recursos que você não precisa alocar para uma sessão SSH cujo único propósito é transportar seu túnel.

Observe também que algumas dessas opções podem ser adicionadas a um perfil personalizado em seu arquivo ~/.ssh/config , caso você ache que seria preferível colocar mais de sua configuração estática em arquivos de configuração estática em vez de em scripts. A opção RemoteForward config file é equivalente à opção de linha de comando -R .

Veja também: link

    
por 18.10.2014 / 00:00
1

-N não é plano de fundo, não é um comando remoto. Você quer algo como:

ssh -R $rport:dc-bb7925e7:$camport -p 25 [email protected]&

Anote o "e" à direita, que será o segundo plano do comando.

Você provavelmente vai querer escrever alguma lógica para voltar e fechar a sessão SSH quando terminar.

    
por 17.10.2014 / 22:26
0

Isso funciona mesmo em um mac

ssh -o ControlPersist=yes -fNT -L 9022:10.0.20.1:22 [email protected]

E sim, você pode usar & com isso e não vai congelar no fundo.

Jon Nelley: Eu tive que adicionar -o ControlPersist = yes para evitar que a conexão fosse fechada. Isso se deve ao fato de eu ter o ControlMaster = auto no meu ~ / .ssh / config

Esta seria uma maneira de encadear várias conexões SSH e encaminhar com um único liner ou um script bash.

    
por 09.11.2018 / 22:59