私が働いている環境では、SSHを介してさまざまなサーバーに接続するためにトンネルを使用しています。たとえば、「ssh -p XXXXXユーザー名@localhost」を使用してサーバーにアクセスします。
ポートが常に同じである場合は、次のようにします。
Host somehost
User bryan
Hostname localhost
Port 12345
ProxyCommand ssh -p 2218 [email protected] -W %h:%p
ただし、トンネルがシャットダウンして復元されると、使用されるポートが変更される可能性があります。それは私が変える力があるのではなく、インフラに組み込まれています。だから、現在のポートを見つけるプログラムを書いた。しかし、次の方法がわかりません。
a) プログラムを実行し、出力を %p 変数に適用する。 b) first.server.com で cron ジョブを実行するか、ポートを含むテキストファイルを作成するか、環境変数を設定する。
実は私はこれをしたいです。可能ですか?
誰かをホストする ユーザーブライアン ホスト名ローカルホスト ポート `sh get_port_for_somehost.sh` エージェントコマンド ssh -p 2218[Eメール保護]-W %h:%p
今すぐ考えられる唯一のことは、現在のポートが何であるかを照会した後、私の.ssh / configを書き換えるプログラムを私のラップトップで実行することです。しかし、そうしたくありません。
答え1
ポート番号を抽出するために設定ファイルの変数をスクリプトする方法はありません。
bash
ただし、ポートをインポートして正しい場所に配置する関数を作成できます。たとえば、次のようにを配置します~/.bashrc
。
function ssh-dynamic() {
PORT=`sh get_port_for_somehost.sh`
exec ssh -p "$PORT" somehost "$@"
}
他の設定はに残ることがあります~/.ssh/config
。