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セッションが開いたら、このルールを削除できます。