Expect의 도움으로 SSH 터널을 통해 mysql에 대한 액세스 전달

Expect의 도움으로 SSH 터널을 통해 mysql에 대한 액세스 전달

MySQL 서버에 액세스하기 위해 작동하는 SSH 터널을 생성하는 다음 명령이 있습니다.

ssh -f test@remotehost -L 127.0.0.1:3306:mysqlhost:3306 -N

여기서 원격 호스트는 .ssh/config에서 ProxyCommand를 사용하여 구성한 점프 호스트를 통해서만 액세스할 수 있습니다.

Host somehost
  Hostname jumphost-name
  ForwardAgent yes
  ControlPath ~/.ssh/cm-%r@%h:%p
  ControlMaster auto
  ControlPersist 10m

Host *.example.com 
  User test
  StrictHostKeyChecking no
  ProxyCommand ssh -X -4 test@somehost nc %h %p

Expect 도구를 사용하여 동일한 작업을 어떻게 수행할 수 있나요?

답변1

expect일종의 TCP 연결로부터의 입출력을 처리하기 위한 프레임워크입니다. 물론 ssh를 지원할 수 있지만... 확실히 mysql 프로토콜을 이해하지 못합니다. mysql 프로토콜 자체의 통신 대부분은 바이너리 데이터입니다. 그리고 마지막으로 조사했을 때 expect바이너리 데이터를 제대로 구문 분석할 수 없었습니다. SSH를 통해 연결한 후 mysql시작해야 하는 래퍼를 클라이언트에 작성하는 것이 더 나을 수도 있습니다 mysql.

관련 정보