私のユーザーを使用して外部サーバーを介してトンネリングし、次のコマンドを使用して内部サーバーで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
それは問題ではありません。問題は、このユーザーが最初のサーバーだけがトンネルとして使用できるように、両方のシステムにシェルがないように設定したことです。
上記のコマンドが機能します。