ウェブインターフェース、PostgreSQLデータベース、または特定の条件のみを満たす管理サービスへのアクセスが必要です。 127.0.0.1サーバーのファイアウォールでポートを開放すれば手っ取り早いが、そうするとこのサービスは本来アクセスされるべきではないネットワークからもアクセス可能になってしまう。
あ SSHトンネル これにより、接続がSSHセッションに引き継がれます。一時的なアクセスには、この方法をお勧めします。サービスは公開されたまま閉じられ、トンネルを開いたマシンのみが使用できます。ただし、特に適切なリダイレクトを選択し、リスニングアドレスを確認する必要があります。 -R。

-L オプションを使用して、お使いのマシンにポートを転送します。
ローカルリダイレクト -L マシン上でポートを開き、SSHサーバーからアクセス可能な宛先に接続を転送します。一般的な形式は次のとおりです。
ssh -L local_address:local_port:target_host:target_port user@ssh_server
リモートサーバーのポート80のみでリッスンするHTTPインターフェースにアクセスするには:
ssh -N -T -o ExitOnForwardFailure=yes
-L 127.0.0.1:8080:127.0.0.1:80
[email protected]
-Lローカルリダイレクトを作成します。127.0.0.1:8080これは、お使いのコンピュータの開いているポートです。127.0.0.1:80SSHサーバーから見た宛先です。-Nリモートコマンドの起動を回避する。-T端末の割り当てを回避する。ExitOnForwardFailure=yesSSHが要求されたリダイレクトを作成できない場合、セッションは閉じられます。
この最後のオプションは、リスニングポートの作成を確認するものです。最終的なサービスが応答していることを証明するものではありません。トンネルを開いた後は、必ず宛先をテストしてください。
注文が有効な限り、パソコンからサービスをテストできます。
curl http://127.0.0.1:8080/
右側に位置する住所 -L あなたの注目に値する。前の例では、 127.0.0.1 これはSSHサーバーを指しており、あなたのコンピューターを指しているわけではありません。ターゲットがプライベートネットワーク上の別のマシンにある場合は、そのプライベートアドレスを指定してください。
ssh -N -T -o ExitOnForwardFailure=yes
-L 127.0.0.1:15432:10.20.0.15:5432
[email protected]
PostgreSQLクライアントは、 127.0.0.1:15432要塞は実際の接続を開く 10.20.0.15:5432基地はインターネットで傍受する必要はない。
トンネルが実際にリスニングしていることを確認してください
お使いのコンピューターで、ローカルポートを制御するには、 ss :
ss -ltnp | grep ':8080'
ss -ltnp | grep ':15432'
リスニングセッションを見る必要があります 127.0.0.1プロセスに関連する ssh見たら 0.0.0.0 または ポートはマシン上の他のインターフェースからアクセスできる可能性があります。トンネルを閉じて、明示的に指定して再作成してください。 127.0.0.1。
へのガイド Linuxでssを使ってポートを開放する リスニングアドレスの読み取りの詳細を説明します。また、SSHサーバーが最終宛先に到達できることを確認してください。
curl -I http://127.0.0.1:80/
nc -vz 10.20.0.15 5432
トンネルが作成されますが、 カール またはSQLクライアントが受信します 接続拒否SSH自体はおそらく正常に動作しています。問題は、最終的な接続先が指定されたアドレスまたはポートで待機していないことです。
サービスを公開せずに誤って -R オプションを使用してしまった
リモートリダイレクト -R これは逆の動作をします。SSHサーバー上でポートを開き、それをあなたのマシンからアクセス可能なサービスに転送します。例:ポート3000上のローカルアプリケーションをリモートサーバーからのみアクセス可能にする。
ssh -N -T -o ExitOnForwardFailure=yes
-R 127.0.0.1:9000:127.0.0.1:3000
[email protected]
リモートサーバー上で、ローカルプロセスは以下を呼び出すことができるようになりました。
curl http://127.0.0.1:9000/
デフォルトでは、 sshd このリモートポートをループバックインターフェイスにバインドします。置き換えないでください。 127.0.0.1 による 0.0.0.0 または * サービスに参加できる人物を決定せずに。サーバーパラメータ ゲートウェイポート これにより、他のインターフェースでのリスニングが可能になります。シンプルなローカルデモを、ネットワークに公開されるサービスへと発展させることができます。
オプションも避けてください -g 他のマシンが転送されたポートに接続しないようにするには、ローカルリダイレクトを使用します。フットプリントを最小限に抑えるには、トンネルをバインドします。 127.0.0.1 両側にあります。
SSHサーバー制限の制御
SSHが応答する場合 行政的に禁止されている リダイレクトが拒否された場合は、実際のサーバー設定を確認してください。
sudo /usr/sbin/sshd -T | grep -E '^(allowtcpforwarding|gatewayports|permitopen|permitlisten)'
TCP転送を許可する ローカルリダイレクト、リモートリダイレクト、両方、またはどちらも許可しない、のいずれかを選択できます。 許可する開く そして 許可する聞く これらの制限は、許可される宛先とポートを制限するために使用されます。共有サーバーでは、すべてのアカウントにグローバルなアクセス権限を付与するよりも、これらの制限を設ける方が望ましいです。
何らかの変更を加える前に、 /etc/ssh/sshd_config または以下のファイル /etc/ssh/sshd_config.d/現在のセッションを開いたままにして、構文をテストしてください。
sudo /usr/sbin/sshd -t
エラーなく正常に復旧した後のみ、SSHを再起動してください。詳しい手順については、以下の記事をご覧ください。 UbuntuでSSHサービスを再起動するこのアカウントでまだパスワードを使用している場合は、まず SSHキーを設定する。
繰り返し使用するトンネルを ~/.ssh/config に保存します。
定期的に使用するデータベースの場合は、長いコマンドをコピーしないでください。専用ホストを追加します。 ~/.ssh/config :
ホストトンネルデータベース
ホスト名 bastion.example.net
ユーザー管理者
LocalForward 127.0.0.1:15432 10.20.0.15:5432
ExitOnForwardFailure はい
サーバー稼働間隔 30
ServerAliveCountMax 3
ファイルを保護し、トンネルをフォアグラウンドに開きます。
chmod 600 ~/.ssh/config
ssh -N -T tunnel-db
最初の実行をフォアグラウンドにしておくことをお勧めします。キー、ローカルポート、またはリダイレクトのエラーがすぐに表示されます。 Ctrl + C トンネルを適切に閉じます。その後、バックグラウンドで起動すると、 -f停止する前に、正しいプロセスを特定してください。
pgrep -af 'ssh.*15432'
PIDを殺す
避ける キル -9 反射的に。通常、通常の信号でセッションが閉じられ、ポートが解放されます。
トンネルが通過しない原因の診断
- アドレスはすでに使用されています 別の方法として、ローカルポートを使用する方法があります。
ss -ltnpまたは別の港を選択してください。 - 接続拒否 : ターゲットサービスがリッスンしていないか、SSHサーバーの観点から見て宛先アドレスが間違っています。
- 行政的に禁止されている SSHの設定により、リダイレクトがブロックされるか、要求された宛先が制限されます。
- タイムアウト SSHサーバーは、ルーティングまたは中間ファイアウォールにより、ターゲットに到達できません。
- 落下トンネル 接続の安定性を確認し、
サーバー稼働間隔診断もせずにSSHを再起動するループではなく。
交渉とリダイレクトの詳細を取得するには、一時的に追加します -v :
ssh -v -N -T -L 127.0.0.1:8080:127.0.0.1:80 [email protected]
SSHトンネルは通信を保護しますが、対象サービスのアクセス権限を修正するものではありません。ローカルループバックでリッスンを続け、制限付きのSSHアカウントを使用し、認証済みキーを管理し、アクセスが不要になったらすぐにセッションを閉じてください。
の構文 -L、 -R、 -N そして -g に詳しく記載されています OpenSSHクライアントの公式ドキュメントコントロール TCP転送を許可する、 ゲートウェイポート、 許可する開く そして 許可する聞く で説明されています sshd_config(5)。