Acabei de descobrir sobre o recurso ControlMaster / ControlPath do OpenSSH, que permite usar uma única conexão SSH para executar vários terminais.
Como geralmente uso o SSH para usar o encaminhamento de porta para obter sessões VNC criptografadas e autenticadas, reconheci instantaneamente que não é possível adicionar o encaminhamento de porta a um servidor remoto ao qual você já possui uma conexão estabelecida. Isso é péssimo.
Às vezes, descobri que você pode contornar essa limitação digitando ~ C em uma sessão de terminal SSH em execução. Isso abre uma linha de comando que permite adicionar ou remover encaminhamentos de porta.
Minha pergunta agora é: Como posso adicionar encaminhamentos de porta em uma sessão SSH existente que esteja usando o recurso ControlMaster / ControlPath, sem a necessidade de ter acesso a uma sessão de terminal dentro dessa sessão SSH. Eu preciso disso para ativar meu script, que inicia uma conexão VNC encapsulada segura para eu adicionar e remover posteriormente seus encaminhamentos de porta.
(Eu sei que poderia usar um multiplexador de terminal como o GNU Screen ou tmux, na verdade já estou fazendo isso. Mas gosto da ideia de usar apenas uma sessão SSH por motivos de servidor.)
Respostas:
Isso é bem simples, na verdade. Basta adicionar o ctl_cmd
-O forward
ao seu comando existente, assim:torna-se:
A
ssh
página do manual discute a-O ctl_cmd
opção:Obviamente, isso pressupõe que você tenha ativado
ControlMaster yes
no seu~/ssh/config
arquivo ou-M
na linha de comando.fonte