カスタムホスト名を使用したSSHポート転送

カスタムホスト名を使用したSSHポート転送

リモートWebサーバーにアクセスするには、ポート転送に次のコマンドを頻繁に使用します。

ssh user@remotehost -L 1234:localhost:1234

だから今入ることができます。http://localhost:1234私のブラウザからリモートホストのWebサーバーにアクセスします。今やりたいのは、localhost以外の名前を使用することです。たとえば、いくつかのパラメータを使用してsshを呼び出して次のように入力できますか?http://remotealias:1234私のブラウザからリモートWebサーバーにアクセスしますか?これは、自分のローカルコンピュータのポート1234で同時に実行される他のサービスがある場合(そして多くのポート:ホスト - トンネルマッピングを覚えたくない場合)に特に便利です。

sshコマンドだけでは、これが不可能な場合は、説明されているように機能するために、自分のコンピュータでいくつかのローカル構成を編集する必要があるソリューションにも興味があります。

答え1

はい。ローカルシステムの各ホストに対してIPを生成できます。

ip address add 122.0.0.2/32 dev eth0
ip address add 122.0.0.3/32 dev eth0

ホストファイルを編集

echo "127.0.0.2 remotehost1.com" >> /etc/hosts
echo "127.0.0.3 remotehost2.com" >> /etc/hosts

その後、各IPはホストIPに転送されます(ドメインを介した直接アクセスはホストファイルの変更によって中断されます)。

ssh user@$remotehost1_IP -L 127.0.0.2:80:localhost:1234
ssh user@$remotehost2_IP -L 127.0.0.3:80:localhost:1234

その後、通常どおりWebブラウザを使用します。

http://remotehost1.com
http://remotehost2.com

これにより、独自のSSHトンネルを介して独自のローカルIPの各リモートFQDNがトンネルされます。

答え2

するとき

ssh [email protected] -L 1234:localhost:5678

ホストb.company.comでは、以下が発生します。

  • ホストBでは、sshはポート1234でリッスンを開始します。
  • localhostホストAからポート5678を介して(つまり、ホストAに再接続)接続を確立します。
  • これら2つのエンドポイントのトラフィックは、AとBの間のSSH接続を介して転送されます。

したがって、最終結果は、ホストAのポート5678がホストBのポート1234を介してアクセスできることです。

これを入力する必要があるのlocalhostは、ホストAが保護されたネットワークのエントリポイントである「ジャンプサーバー」になる可能性があるためです。したがって、ホストBから直接ホストCにアクセスすることはできませんが、ホストBからホストAにアクセスし、ホストAからホストCにアクセスできる場合は、次のことができます。

ssh [email protected] -L 1234:c.company.com:5678

これにより、ホストBとAの間、ホストAとCの間に接続が確立され、ホストCのポート5678がホストAのポート1234にトンネリングされます。

これは2つの結果をもたらします。

  • 他のサービスに対してクライアント(ホストB)がすでにポート1234を使用している場合、トンネルには使用できません。別のポートを使用する必要があります(ただし、選択できるポートが多い)。

  • ブラウザでは常にトンネルのローカルエンドポイント、つまりに接続されますlocalhost。リモートホストに名前を割り当てても、この内容は変更されません。

いいえ、それはあなたが望むものではありません。

編集する

十分に明確でない場合は、別のポート番号を使用して非常に簡単にローカルサービスを実行できます。したがって、この方法でホストA、B、Cにアクセスしようとしており、ホストはすべてポート80でサービスを提供しており、ポート80で独自のWebサーバーを実行しているとします。それからあなたはできます

ssh user@hosta -L 5000:localhost:80
ssh user@hostb -L 5001:localhost:80
ssh user@hostc -L 5002:localhost:80

これで、ブラウザにhttp://localhost:5000http://localhost:5001と入力してアクセスできますhttp:/localhost:5002。そして、http://localhost:80まだ自分のローカルサーバーにアクセスできます。

多数のIPアドレスやリモートエイリアスを割り当てるなど、複雑な設定は実際には必要ありません。

答え3

SSH 経由でポート転送を設定する場合は、ポートyour_machine:port(コンピュータの観点から)とmachine:port接続されているコンピュータの視点の間にブリッジを設定します。

つまり、コマンドを呼び出すと

ssh user@remotehost -L 1234:localhost:4567

remotehostコンピュータのポート(アドレス)に接続すると、1234プラスにssh接続が発生し、localhostssh接続のリモート部分はそのポートで接続を確立しようとしますlocalhostlocalhostonがremotehost自分を指すので)。4567

質問の良い点に戻ります。

システムのポートに異なるサービスがある場合は、1234システムで利用可能な別のポートを選択できます。

関連情報