指定されたポートでSSHを接続するには?

指定されたポートでSSHを接続するには?

SSHを使用してポートに「接続」する方法を知っています。

ssh user@remotehostip -p XXX

SSHを設定する方法はありますか?~から私のローカルコンピュータはどのポートを使用しますか?

答え1

これは達成するのは簡単ではありません。これを行う方法は、ソースポートを表示できる場所によって異なります。ローカルでも同じですか、それとも外部ネットワークの観点から正しいポートであれば十分ですか?

LXC コンテナで SSH クライアントを実行できます。私はこのようなことをしたことがないので、詳しく説明することはできません。ただし、仮想ネットワークインターフェイスを作成し、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セッションが開いたら、このルールを削除できます。

関連情報