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-socket두 개의 파일을 만듭니다.

# 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

관련 정보