Sshを使用して特定のポートに「接続」する方法を知っています。
ssh user@remotehostip -p XXX
Ssh fromローカルコンピュータが使用するポートを確立する方法はありますか?
それは簡単には不可能です。これをどのように行うことができるかは、送信元ポートをどこに表示するかによって異なります。ローカルでも、外部ネットワークの観点から見て適切なポートであれば十分でしょうか。
LXCコンテナでSSHクライアントを実行できます。私はそのようなことをしたことがないので、詳細に説明することはできません。ただし、仮想ネットワークインターフェースを作成してこのコンテナーに接続すると、ssh
は、このインターフェースを参照する唯一の(外部)インターフェースであるため、このインターフェースを使用します。
ホストシステムでは、パケットがこのインターフェイスから送信されたことを検出できるはずです。したがって、NetfilterのNAT(SNAT)を使用して、次のようなソースアドレスを書き換えることができます。
iptables -t nat -A POSTROUTING -o vnet0 -p tcp --dport 22 -j SNAT --to-source :1234
もちろん、22以外のポートに接続した場合、これは機能しません(またはより複雑になります)。
あなたが探しているコマンド構文はおそらくこれです。 ssh -p XXX user @ remotehostipオプションの順序を変更する必要があります。今それを試してください、それは私のために働きます。宜しくお願いします。
ルーターを介してポート転送する場合のこのための簡単な解決策は、受信ポートを任意のポートに設定し、ローカルポートを22に設定することです。マシンは引き続き22で通常のようにssh接続を行いますが、実際にはネットワークの外部から接続します。受信ポートを使用します。ボットが22でマシンを攻撃するのを止めようとしているだけなら、これでうまくいくはずです。
これはあなたの特定の問題には役に立たないかもしれませんが、多くの人がこの理由でここに行くと思います。
-Z portnumオプションを提案しました...
ここにソース: https://github.com/Zibri/openssh-portable
そしてここにプルリクエストがあります: https://github.com/openssh/openssh-portable/pull/1