私はSSH設定ファイルを書いており、少しの論理を実行したいと思っています。例:〜/ .ssh/configファイルで変数を使用できますか?
Host myhost1
ProxyCommand ssh -A {choose randomly between [bastion_host1] and [bastion_host2]} -W %h:%p
上記の(bash?)変数を使用することは可能ですか?ありがとう!
私はSSH設定ファイルを書いており、少しの論理を実行したいと思っています。例:〜/ .ssh/configファイルで変数を使用できますか?
Host myhost1
ProxyCommand ssh -A {choose randomly between [bastion_host1] and [bastion_host2]} -W %h:%p
上記の(bash?)変数を使用することは可能ですか?ありがとう!
~/.ssh/config
では、多くのロジックを持つことはできず、Bashも使用できません。このファイルのマニュアルはman ssh_config
であり、このような機能については言及していません。
あなたができることは、あなたが必要とするロジックを持つスクリプトを作成し、そのスクリプトをssh設定呼び出しにすることです。線に沿って 何か:
ProxyCommand sudo /root/bin/ssh-randomly.sh [bastion_host1] [bastion_host2]
そして、2つのホスト名のパラメータを取り、ランダムにそれらのいずれかを選択して、適切なパラメータと実際のssh
コマンドを実行するbashスクリプト/root/bin/ssh-randomly.sh
を書きます。
いいえ; .ssh/config
は外部プログラムによって処理されません。
ssh() {
(($RANDOM % 2)) && bastion=bastion_host1 || bastion=bastion_host2
command ssh -A "$bastion" "[email protected]"
}
あなたのプロキシコマンドはシェルスクリプトにすることができます。 ~/bin/selecthost
で
host myhost1
ProxyCommand $HOME/bin/selecthost %h %p
そして:
#!/usr/bin/env bash
hosts=(bastion1 bastion2)
onehost=${hosts[$RANDOM % ${#hosts[@]}]}
ssh -x -a -q ${2:+-W $1:$2} $onehost
未テスト。あなたの人数は変わるかもしれません。ナッツを含むことがあります。
アップデート:コメントパー
、私は次のことをテストしてみた、そしてそれがまたうまく動作:もちろん
host myhost1 myhost2
ProxyCommand bash -c 'hosts=(bastion1 bastion2); ssh -xaqW%h:22 ${hosts[$RANDOM % ${#hosts[@]}]}'
を、この方法は、あなたが指定することはできません。あなたのssh設定の同じhost
エントリ内に複数のホストが必要な場合、別々のシェルスクリプトのロジックに追加できる、ホストごとのカスタムポート。
ありがとう!既存のProxyコマンドのより直接的なコピーとして、 'ssh -A $ onehost $ {2:+ -W $ 1:$ 2}' のような理由はありますか? –
このスクリプトでは、 '$ onehost'変数は、bash配列からランダムな配列要素を選択することによって設定されます。あなたのProxyCommandはあなたのシェルによって実行されるので、あなたのシェルがbashである限り、私はそれを試していませんが、なぜこのスクリプトの全機能を1行に含めることができなかったのか分かりません。私はあなたがデフォルトのシェルとしてbashを使用していることを知らないので、この方法で答えました。 (私のシステムでは、プログラミングにはbashを使用しますが、tcshはデフォルトのシェルです) – ghoti
@BobRisky:スクリプトを単一のProxyCommand行に埋め込むオプションを追加しました。 :) – ghoti