SSH LocalForwardディレクティブでTOKENSを使用する方法は?

SSH LocalForwardディレクティブでTOKENSを使用する方法は?

以下の内容があります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

unix-socket2つのファイルを作成します。

# ls -1 /opt/ssh/soc
example.socket
%n_mysql.socket

明らかに、LocalForwardディレクティブはトークンが好きではありません...

理由とこれを達成する他の方法があるかどうかを知りたいです。

、、、、、、、、、、、、およびLocalCommandタグを許可することが確認されました。私が望むことを達成するためにどのように使用することができますか?%%%C%d%h%i%l%n%p%r%T%u

次の設定を試みましたが、ソケットではctrlなくmysqlソケットのみが生成されます。

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

ベストアンサー1

私の実験によると、人々はopenssh仕事をかなり複雑にすることに決めたようです。次のラッパースクリプトはいくつかのインスピレーションを与えることができます。

#! /bin/sh --

HNAME=${1:?## Err: Please specify the host name}

CONFD="/opt/ssh"
SOCKETS="${CONFD}/soc"

ssh -fTNF "${CONFD}/config" "${HNAME}" && {
  ssh -O forward -S "${SOCKETS}/${HNAME}.socket" -TNL "${SOCKETS}/${HNAME}_mysql.socket:127.0.0.1:3306" "${HNAME}" &&\
  ssh -O check -S "${SOCKETS}/${HNAME}.socket" "${HNAME}"
} || exit 1

おすすめ記事