web-dev-qa-db-ja.com

可変ポートを使用した.ssh / config ProxyCommand

私が作業している環境では、トンネルを使用してさまざまなサーバーに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を書き換えることですが、私はそうしたくないのです。

5
Bryan

構成ファイルにスクリプトを記述して、ポート番号の変数をプルすることはできません。

ただし、bash関数を記述してポートを取得し、正しい場所に配置できます。たとえば、以下を~/.bashrcに配置します。

function ssh-dynamic() {
  PORT=`sh get_port_for_somehost.sh`
  exec ssh -p "$PORT" somehost "$@"
}

他の構成は~/.ssh/configに留まる場合があります。

1
Jakuje