外部接続サーバーを介して内部サーバーのmysqlに制限されたSSHトンネル

外部接続サーバーを介して内部サーバーのmysqlに制限されたSSHトンネル

私のユーザーを使用して外部サーバーを介してトンネリングし、次のコマンドを使用して内部サーバーで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

それは問題ではありません。問題は、このユーザーが最初のサーバーだけがトンネルとして使用できるように、両方のシステムにシェルがないように設定したことです。

上記のコマンドが機能します。

関連情報