Com o seguinte ssh_config
:
Match all
IdentityFile /opt/ssh/id_rsa
StrictHostKeyChecking no
ServerAliveInterval 30
ServerAliveCountMax 3
ControlMaster auto
ControlPersist 300
StreamLocalBindMask 0111
StreamLocalBindUnlink yes
ExitOnForwardFailure yes
Compression yes
BatchMode yes
Host example
LocalForward /opt/ssh/soc/%n_mysql.socket 127.0.0.1:3306
ControlPath /opt/ssh/soc/%n.socket
HostName example.com
User user
Port 22
Dois unix-socket
arquivos são criados:
# ls -1 /opt/ssh/soc
example.socket
%n_mysql.socket
Obviamente LocalForward
, a diretiva não gosta de tokens ...
Eu me pergunto por que e existe uma maneira alternativa de conseguir isso?
Vejo que LocalCommand
aceita os seguintes tokens: %%
, %C
, %d
, %h
, %i
, %l
, %n
, %p
, %r
, %T
, e %u
. Poderia ser de alguma forma usado para alcançar o que eu quero?
Eu tentei a seguinte configuração, mas ela apenas cria o ctrl
soquete, não o mysql
único.
Host example
PermitLocalCommand yes
LocalCommand ssh -F /opt/ssh/config -S /opt/ssh/sockets/%n.socket -TNL /opt/ssh/sockets/%n_mysql.socket:127.0.0.1:3306 -p %p -l %u %h
ControlPath /opt/ssh/soc/%n.socket
HostName example.com
User user
Port 22
Com base em meus experimentos, parece que
openssh
as pessoas decidiram tornar as coisas bastante complicadas. O script wrapper a seguir pode fornecer alguma inspiração: