Como se conectar a uma sessão SSH em segundo plano com -f -N?

7

Estou fazendo algum trabalho em que preciso girar uma máquina usando proxychains, então estou conectando a um sistema e ligando uma porta local assim ...

ssh -f -N -D 9000 [email protected]

… que me retorna de volta ao prompt de comando depois de abrir a conexão. Eu posso então usar algo como proxychains para executar comandos através de host.com .

Minha pergunta é: Como posso me conectar / interagir com a mesma sessão para obter um shell remoto no host.com? O jeito que estou fazendo agora é abrir outra sessão ssh com um simples ssh [email protected] , mas estou pensando que tem que haver uma maneira de utilizar a primeira sessão que abri.

    
por Kevin 02.03.2013 / 20:00

2 respostas

11

Se não foi criado com o multiplex ativado, você não pode.

Na próxima vez, inicie a sessão em segundo plano da seguinte forma:

ssh -f -N -M -S ~/.ssh/[email protected] -D 9000 [email protected]

Aqui -M ativa o modo mestre multiplex e -S define o caminho do soquete.

Agora você pode usar ssh -S ~/.ssh/[email protected] dummyhost para abrir uma segunda sessão na mesma conexão. É possível controlar o mestre dando -O exit , -O check e várias outras opções. (Infelizmente, -O forward é uma adição recente.)

Para tornar isso automático, você pode usar as seguintes opções em .ssh/config :

Host *
    ControlPath ~/.ssh/S.%l.%r@%h:%p
    ControlMaster auto
    ControlPersist 10m

Definir ControlPath significa que você não precisa especificar -S todas as vezes.

Configurar ControlMaster auto significa que cada nova conexão continuará automaticamente em segundo plano como um mestre multiplex. (Sem isso, você ainda pode iniciar novos mestres com ssh -fNM host ).

A configuração de ControlPersist 10m significa que os mestres automáticos permanecerão por 10 minutos quando não tiverem sessões ativas. (Esta é uma opção recentemente adicionada.)

Observe que as transferências em lote em uma conexão multiplexada farão com que as sessões interativas fiquem realmente lentas ...

    
por 02.03.2013 / 20:27
0

Deixar os parâmetros -f (Background SSH) e -N (Não executar comando remoto), portanto use

ssh -D 9000 [email protected]
    
por 02.03.2013 / 20:21