[問題ID:30502] sshのローカルポートフォワーディングの書式について
- フォーラムは新サイトへ移行しました。
- このフォーラムではゲスト投稿が禁止されています
OnooonO
投稿数: 2
以下の設問についてです。
--- ここから
SSHポートフォワーディングを使って、ローカルのポート3306に接続するとSSHサーバ(アドレス:ssh-server)内のデータベースサービス(ポート番号:3306)に接続するようにトンネルを用意したい。正しいコマンドはどれか。
(誤)ssh -L 3306:ssh-server:3306 user@ssh-server
(正)ssh -L 3306:localhost:3306 user@ssh-server
--- ここまで
解説によると(誤)は書式が誤っているとのこと。
書式は誤っていないように思えますのでもう少し解説をお願いします。
当方の理解は以下の通りです。
(誤)と(正)の違いは「SSHサーバから見た接続先アドレス」の指定と思っています。
接続先アドレスに誤りがあるとすれば、接続先アドレスにssh-serverを指定してはいけない理由を教えていただけますか。
SSHサーバ(ssh-server)からみた自分自身はlocalhostでありかつssh-serverだと思います。
そう考えるとどちらの選択肢も正しいコマンドと思っています。
当方の誤解を指摘していただけるとありがたいです。
--- ここから
SSHポートフォワーディングを使って、ローカルのポート3306に接続するとSSHサーバ(アドレス:ssh-server)内のデータベースサービス(ポート番号:3306)に接続するようにトンネルを用意したい。正しいコマンドはどれか。
(誤)ssh -L 3306:ssh-server:3306 user@ssh-server
(正)ssh -L 3306:localhost:3306 user@ssh-server
--- ここまで
解説によると(誤)は書式が誤っているとのこと。
書式は誤っていないように思えますのでもう少し解説をお願いします。
当方の理解は以下の通りです。
(誤)と(正)の違いは「SSHサーバから見た接続先アドレス」の指定と思っています。
接続先アドレスに誤りがあるとすれば、接続先アドレスにssh-serverを指定してはいけない理由を教えていただけますか。
SSHサーバ(ssh-server)からみた自分自身はlocalhostでありかつssh-serverだと思います。
そう考えるとどちらの選択肢も正しいコマンドと思っています。
当方の誤解を指摘していただけるとありがたいです。
arashi1977
居住地: 広島
投稿数: 1715
検証もせず実際の問題も見ないで言うのもなんですが…
引用:ここでの一番のポイントは
- ssh-serverはlocalhost(127.0.0.1)ではない
- localhostは127.0.0.1であって、外部からは接続できない
- ssh-serverから見たssh-serverがサーバ内を示すとは限らない
ということです。
ssh-serverから見たlocalhostだからといって、localhostがssh-serverだとは言えないということです。
テキストでの説明なので、長く、かつわかりにくいかもしれませんが…
そもそもポートフォワーディングをする(トンネルを掘る)ということは、外部から直接そのポートにアクセスできないため、SSHポートフォワーディングによってアクセスできるようにする必要があるということです。
例えば例の3306ポートといえばMySQLです。データベースに外部からかんたんにアクセスできるとセキュリティ的に問題です。そのためよくあるのが
- 特権ユーザはlocalhost(127.0.0.1)からしか接続を許可しない
- 3306番ポートはインターネットに開放しない
という手段です。
(つまり、127.0.0.1:3306 でしかMySQLへは接続できない)
これはこれで「SSHでssh-serverにログインして、ローカルでmysqlコマンドで作業する」分には問題はありません。ですが、GUIの管理ツールや外部からDBを操作したい、いちいちssh-serverにSSHログインさせたくない、という場合にはポートフォワーディングで「ローカルの3306番ポートへの通信は、ssh-serverへのSSH接続を経由して、ssh-serverから見たlocalhost(127.0.0.1)の3306番ポートへ接続する」というようにすれば、解決できます。
こういう例を踏まえての設問ではないかと推測します。
引用:
当方の理解は以下の通りです。
(誤)と(正)の違いは「SSHサーバから見た接続先アドレス」の指定と思っています。
接続先アドレスに誤りがあるとすれば、接続先アドレスにssh-serverを指定してはいけない理由を教えていただけますか。
- ssh-serverはlocalhost(127.0.0.1)ではない
- localhostは127.0.0.1であって、外部からは接続できない
- ssh-serverから見たssh-serverがサーバ内を示すとは限らない
ということです。
ssh-serverから見たlocalhostだからといって、localhostがssh-serverだとは言えないということです。
テキストでの説明なので、長く、かつわかりにくいかもしれませんが…
そもそもポートフォワーディングをする(トンネルを掘る)ということは、外部から直接そのポートにアクセスできないため、SSHポートフォワーディングによってアクセスできるようにする必要があるということです。
例えば例の3306ポートといえばMySQLです。データベースに外部からかんたんにアクセスできるとセキュリティ的に問題です。そのためよくあるのが
- 特権ユーザはlocalhost(127.0.0.1)からしか接続を許可しない
- 3306番ポートはインターネットに開放しない
という手段です。
(つまり、127.0.0.1:3306 でしかMySQLへは接続できない)
これはこれで「SSHでssh-serverにログインして、ローカルでmysqlコマンドで作業する」分には問題はありません。ですが、GUIの管理ツールや外部からDBを操作したい、いちいちssh-serverにSSHログインさせたくない、という場合にはポートフォワーディングで「ローカルの3306番ポートへの通信は、ssh-serverへのSSH接続を経由して、ssh-serverから見たlocalhost(127.0.0.1)の3306番ポートへ接続する」というようにすれば、解決できます。
こういう例を踏まえての設問ではないかと推測します。
Re: [問題ID:30502] sshのローカルポートフォワーディングの書式について
msg# 1.1.1
OnooonO
投稿数: 2
丁寧な解説ありがとうございます。
テキストのみでわかりにくいかもと書かれていましたが、とてもわかりやすかったです。
まだまだ当方の勉強が足りないです。さらなる修行を続けています。
貴重なお時間を割いて解説を書いてくださりありがとうございました。
テキストのみでわかりにくいかもと書かれていましたが、とてもわかりやすかったです。
まだまだ当方の勉強が足りないです。さらなる修行を続けています。
貴重なお時間を割いて解説を書いてくださりありがとうございました。
Re: [問題ID:30502] sshのローカルポートフォワーディングの書式について
msg# 1.1.1.1
zakky2019
投稿数: 1
arashi1977さん、Onooonさん
私も本日同じところで疑問に思い、このQAが大変参考になりました。
お2人ともありがとうございました。
私も本日同じところで疑問に思い、このQAが大変参考になりました。
お2人ともありがとうございました。