
サーバーに接続するときに、特定のローカル ポートに任意のリモート転送ポートを確立する必要があります。サーバーは多数のユーザーが使用する重要なコンピューティング リソースであるため、管理者権限がありません。常に使用可能であると期待する理由がないため、静的なリモート ポート番号を選択することはできません。
私は、ポート番号に 0 を使用するようなコマンドを使用していますssh -R 0:localhost:8001 servername
。これにより、リモート サーバーがポートを選択できるようになります。これはうまく機能します。クライアントが割り当てられたポート番号を通知し、それを使用して自分のマシン (またはネットワーク上の別のマシン) に手動で接続できます。
問題は、リモート システムで他のユーザーが使用できるスクリプトをいくつか作成する必要があり、リモート エンドでそのセッションのポート番号を決定する手段が必要であることです。セッションで SSH_* 環境変数を確認しましたが、どれも役に立ちませんでした。の出力を調べてss -le | grep "uid:$UID"
、他のものの中からポートを見つけようとしましたが、少し複雑で、特にユーザーが別のログイン セッションで他のプロセスを実行している場合は、常に機能するとは限りません。
動的に割り当てられたリモート転送ポート番号を見つけるための、確実で簡単な方法はありますか?
編集: これは重複していることがわかりました以前の投稿、質問は少し異なる言葉で尋ねられましたが、まったく同じことです。残念ながら、サーバー上で root または sudo を必要とするソリューションを利用することはできません。
私が望んでいることは信頼できる方法では実行できない可能性があると認識しており、この自動ポート選択の機能はあまり役に立ちません。