![インターネットからサーバー1(インターネット上)を介してローカルサーバー2(インターネットにはありません)へのSSH接続](https://linux33.com/image/225658/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%81%8B%E3%82%89%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC1%EF%BC%88%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E4%B8%8A%EF%BC%89%E3%82%92%E4%BB%8B%E3%81%97%E3%81%A6%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC2%EF%BC%88%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%81%AB%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%EF%BC%89%E3%81%B8%E3%81%AESSH%E6%8E%A5%E7%B6%9A.png)
次の問題を解決するのに苦労しており、助けが必要です。
私は持っています:
- Server1はインターネットに接続され、LAN1(Debian)に接続されています。パブリックIP:xx.xx.xx.xx LAN1のプライベートIP:192.168.1.10
- Server2はインターネットから隔離され、LAN1(Ubuntu)プライベートIP、LAN1:192.168.1.17に接続します。
私が達成したいもの:
リモートノートブックで、次のコマンドを使用してサーバー2へのSSH接続を確立します。
ssh -p1110 [email protected]
私が今まで得たところ:
Server1はLAN1からServer2をpingできます(またはその逆)。リモートラップトップを使用してSSHを介してServer1にログインできます。
ssh -p 20 [email protected]
Server2を使用してSSH経由でログインできます
ssh -p 1110 [email protected]
Server2 SSH構成はポート1110を許可するように設定されました(もちろんサービスは再起動されました)。
2つの明確なiptablesでServer1に設定しました。
iptables -t nat -I PREROUTING -p tcp -d xx.xx.xx.xx --dport 1110 -j DNAT --to-destination 192.168.1.17:1110
(注:テスト目的で両方のufwは無効になり、デフォルトでは「双方向接続を許可」に設定されています。)
現在、リモートノートブックからserver2にアクセスできません。
トラブルシューティング:これまでSSHセッションがserver2に到達できることを確認しようとしました。
私がserver1で使用するもの:
sudo tcpdump -i ens1 port 1110
実際、server1でアクティビティの兆候を見つけることができます。
サーバー2でも同様
sudo tcpdump -i ens18 port 2201
リモートSSHセッションの試行に関するいくつかのトレースも表示できます。
だから、リクエストはserver1を介してserver2に到達すると思います。
私の理論
iptablesルールは双方向ではないかもしれませんか?たぶんserver2のいくつかのipatable設定も必要かもしれませんか?
役に立つアイデアがあればありがとうございます。事前にありがとう
PS:ルーターを制御できないため、サーバーレベルでのみルーティングできます。
答え1
SSHを使用してserver1に接続できる限り、リダイレクトされたポートを介してiptables
server2 IMHOに接続するための最良の(安全な)方法ではありません。
報告していませんが、作成した内容によると、このコマンドは理論的には機能します。
ssh -p 20 [email protected] ssh -p 1110 [email protected]
これは、設定ファイル〜/ .ssh / configから次のように翻訳できます。
Host server1
Port 20
HostName xx.xx.xx.xx
User login
Host server2
Port 1100
HostName 192.168.1.17
User login
ProxyCommand ssh server1 -W %h:%p
これは、ProxyCommand
192.168.1.17:1100 で SSH を試みる前に、まず server1 に SSH を送信するように ssh に指示します。
ssh server1
これで、sshをserver1に、sshをserver2に接続するだけですssh server2
(iptableルールを削除できます)。
答え2
ルーターを制御できないため、サーバーレベルでのみルーティングできます。
よく?ただし、ホストにiptablesルールを適用でき、ホストからトラフィックをルーティングしようとしています。
iptables -t nat -Iプリセット -p tcp -d xx.xx.xx.xx --dport 1110 -j DNAT --ターゲット192.168.1.17:1110
パケットのインポート到着server2ですが、server2はルーティングなしでパケットを正しい方向に送り返しません。変装やプロキシを使用する必要があります。
最も簡単で柔軟な解決策は、chienneが提案したようにホストのssh_configファイルを設定することです。