내 사용자를 사용하여 외부 서버를 통해 터널링하고 다음 명령을 사용하여 내부 서버에서 mysql(포트 3306)에 대한 SSH 터널을 설정할 수 있습니다.
ssh -L 33306:localhost:33306 [email protected] ssh -L 33306:localhost:3306 me@internal
그런 다음 다음 명령을 사용하여 mysql에 로그인할 수 있습니다.
mysql -h 127.0.0.1 -P 33306 -u me -p my_database
이제 다른 사용자가 동일한 작업을 수행할 수 있지만 다른 작업은 수행할 수 없도록 설정하고 싶습니다(로그인할 수 없거나 다른 포트에 액세스할 수 없음 등).
external.com의 Authorized_keys에는 다음이 있습니다.
permitopen="internal:3306",permitopen="localhost:33306",no-pty ssh-rsa AAAA...==
내부의 Authorized_keys에는 어떤 제한도 없습니다(필요한지 확실하지 않습니다. 작업을 시작하면 살펴보겠습니다).
그러면 내가 이렇게 할 때:
mysql -h 127.0.0.1 -P 33306 -u me -p my_database
비밀번호를 묻는 것처럼 작동하는 것 같습니다. 비밀번호를 입력했지만 mysql에서 다음을 제공했습니다.
Enter password:
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
터널을 설정한 터미널에서 다음을 얻습니다.
channel 3: open failed: administratively prohibited: open failed
mysql 비밀번호를 묻는 경우 서버와 통신을 시도하기 전에 로컬에서만 발생합니까? 내 허가 오픈 플래그가 잘못되었나요?
답변1
그것은 중요하지 않습니다. 문제는 이 사용자가 첫 번째 서버만 터널로 사용할 수 있도록 두 시스템 모두에 쉘이 없도록 설정했다는 것입니다.
위의 명령이 작동합니다.