Como minha resposta anterior , o página man do ssh explica o -O ctl_cmd
em detalhes, em que ctl_cmd
é um dos check
, forward
, cancel
ou exit
.
-O ctl_cmd
Control an active connection multiplexing master process. When the -O option is
specified, the ctl_cmd argument is interpreted and passed to the master process.
Valid commands are: “check” (check that the master process is running), “forward”
(request forwardings without command execution), “exit” (request the master to
exit), and “stop” (request the master to stop accepting further multiplexing
requests).
Você pode usar ctl_cmd
para realizar a automação desejada para seus scripts. Você precisará primeiro criar um ControlMaster
socket com -S
like e ssh para o remotehost assim:
ssh -v -M -S/tmp/controlmaster-remotehost remotehost
e, em seguida, a partir da sua máquina local, você pode usar forward
e cancel
portas como desejar. Você pode encaminhar várias portas com um comando:
ssh -O forward -S/tmp/controlmaster-remotehost -L5555:localhost:22 -L3333:localhost:22 remotehost
e / ou manipulá-los um de cada vez:
ssh -O cancel -S/tmp/controlmaster-remotehost -L5555:localhost:22 remotehost
ssh -O cancel -S/tmp/controlmaster-remotehost -L3333:localhost:22 remotehost
Eu criei uma essência com uma sessão lado a lado mostrando o ssh -O ctl_cmd
em ação; com a porta forward
/ cancel
do localhost no lado esquerdo, e a saída do ssh conectada ao remotehost no lado direito:
Estes comandos só estão disponíveis a partir de OpenSSH 6.0 :
* ssh(1): support for cancelling local and remote port forwards via the
multiplex socket. Use ssh -O cancel -L xx:xx:xx -R yy:yy:yy user@host"
to request the cancellation of the specified forwardings
* support cancellation of local/dynamic forwardings from ~C commandline
Se você tiver uma versão anterior, precisará atualizar. Se você está no Mac OS X, você pode instalar macports e, em seguida, atualize usando: sudo port install openssh
, que irá instalá-lo em /opt/local/bin
.