Il tuo proxy può essere uno script di shell.
host myhost1
ProxyCommand $HOME/bin/selecthost %h %p
E poi nel ~/bin/selecthost
:
#!/usr/bin/env bash
hosts=(bastion1 bastion2)
onehost=${hosts[$RANDOM % ${#hosts[@]}]}
ssh -x -a -q ${2:+-W $1:$2} $onehost
testato. La tua milizia può variare. Può contenere noci
Aggiornamento:
Per commenti, ho verificato le seguenti, e funziona anche bene:
host myhost1 myhost2
ProxyCommand bash -c 'hosts=(bastion1 bastion2); ssh -xaqW%h:22 ${hosts[$RANDOM % ${#hosts[@]}]}'
Naturalmente, questo metodo non consente di specificare una porta personalizzata per host, che è possibile aggiungere alla logica di uno script di shell separato se necessario per più host nella stessa voce host
nella configurazione ssh.
Cool, grazie! C'è qualche ragione per cui non farei semplicemente 'ssh -A $ onehost $ {2: + - W $ 1: $ 2}' come copia più diretta del Proxycommand esistente? –
In questo script, la variabile '$ onehost' viene impostata selezionando un elemento di matrice casuale da un array bash. Il tuo ProxyCommand è eseguito dalla tua shell, quindi finchè la tua shell è bash, non vedo perché non potresti includere l'intera funzionalità di questo script su una singola riga, anche se non l'ho ancora provato. Ho risposto in questo modo perché non so che stai usando bash come shell predefinita. (Sul mio sistema, utilizzo bash per la programmazione, ma tcsh è la mia shell predefinita.) – ghoti
@BobRisky: aggiunta un'opzione che incorpora lo script su una singola riga ProxyCommand. :) – ghoti