私が作業している環境では、トンネルを使用してさまざまなサーバーにSSHで接続します。たとえば、「ssh -p XXXXX username @ 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ジョブを実行して、ポートを含むテキストファイルを書き込むか、環境変数などを設定します。
実際、私はこれをやりたいと思っています。出来ますか?
ホストsomehost ユーザーbryan ホスト名localhost ポート `sh get_port_for_somehost.sh` ProxyCommand ssh -p 2218 [email protected] -W%h:%p
今考えられる唯一のことは、ラップトップでプログラムを実行して、現在のポートが何であるかを照会してから.ssh/configを書き換えることですが、私はそうしたくないのです。
構成ファイルにスクリプトを記述して、ポート番号の変数をプルすることはできません。
ただし、bash
関数を記述してポートを取得し、正しい場所に配置できます。たとえば、以下を~/.bashrc
に配置します。
function ssh-dynamic() {
PORT=`sh get_port_for_somehost.sh`
exec ssh -p "$PORT" somehost "$@"
}
他の構成は~/.ssh/config
に留まる場合があります。