指定されたポートから ssh に接続するにはどうすればいいですか?

指定されたポートから ssh に接続するにはどうすればいいですか?

ssh を使用して特定のポートに接続する方法を知っています。

ssh user@remotehostip -p XXX

SSHを確立する方法はありますかからローカルコンピュータが使用するポートはどれですか?

答え1

それは簡単にはできません。その方法は、送信元ポートがどこで確認されるかによって異なります。ローカルでも確認されるのでしょうか、それとも外部ネットワークの観点から見て正しいポートであれば十分でしょうか。

SSH クライアントを LXC コンテナで実行できます。私はまだ実行したことがないので、詳しく説明することはできません。ただし、仮想ネットワーク インターフェイスを作成してこのコンテナに接続すると、コンテナがssh認識する唯一の (外部) インターフェイスがこのインターフェイスを使用するようになります。

ホスト システムでは、パケットがこのインターフェイスから来たことを検出できるはずです。したがって、Netfilter の NAT (SNAT) を使用して、送信元アドレスを次のように書き換えることができます。

iptables -t nat -A POSTROUTING -o vnet0 -p tcp --dport 22 -j SNAT --to-source :1234

もちろん、22 以外のポートに接続すると、これは機能しません (または複雑になります)。

答え2

おそらく、探しているコマンド構文はこれです。 ssh -p XXX user@remotehostip オプションの順序を変更する必要があります。今すぐ試してください。私の場合はうまくいきました。よろしくお願いします。

答え3

ルーター経由でポート転送している場合、この問題の簡単な解決方法は、受信ポートを任意のポートに設定し、ローカル ポートを 22 に設定することです。マシンは通常どおり 22 で SSH 接続を行いますが、ネットワークの外部から実際に接続する場合は、受信ポートを使用します。ボットが 22 でマシンを攻撃するのを阻止したいだけであれば、これで十分です。

これはあなたの特定の問題には役立たないかもしれませんが、多くの人がこの理由でここにたどり着くのではないかと思います。

答え4

コンテナなしの Hauke Laging の回答を基に、ssh クライアントを実行する前に次の iptables ルールを追加するだけで十分です。

iptables -t nat -A POSTROUTING -d <remotehostip> -p tcp --dport 22 -j SNAT --to-source :1234

SSH セッションが開かれた後にルールを削除できます。

関連情報