Aș dori ca configurația mea SSH să apeleze la un script în anumite situații pentru a rezolva o adresă IP diferită de cea furnizată de mine. În această situație, de fapt, nu vreau să fac proxy printr-o altă gazdă, pur și simplu schimb gazda la care este trimisă SSH (deși în unele situații am ar cum ar fi să proxy printr-o gazdă, prin urmare grupând acest lucru într-un singur script).
Acesta este un scenariu destul de lung și nu este cu adevărat conceput pentru a fi o singură linie în ProxyCommand
directivă.
Acesta este un extras din script care arată problema:
#!/bin/bash
instance_id="$1"
utilizator="$2"
port="$3"
if [[ $instance_id == *"i"* ]]; atunci
filter="--instance-ids ${instance_id}"
altfel
filter="--filters Nume=adresa-ip,Valoare=${id_instanta}"
fi
public_ip=$(aws ec2 describe-instances $filter | jq -r '.Reservations[0].Instances[0].PublicIpAddress')
if [[ $public_ip == "null" ]]; atunci
Adevărat
altfel
ssh $user@$public_ip -p $port
fi
Și acesta este al meu ~/.ssh/config
:
Gazdă i-* mi-* 172,2* 172,3*
Utilizator cbell
ProxyCommand ~/.ssh/aws_iea_proxy_command.sh %h %r %p
Dacă încerc să fac ssh la un ID de instanță, de ex ssh i-030ee3dd4f2712b3b
, scriptul este declanșat, dar nu mi se oferă un shell interactiv.
[connor@Enigma:~/.ssh] 130 $ ssh i-030ee3dd4f2712b3b
Pseudo-terminalul nu va fi alocat deoarece stdin nu este un terminal.
-bash: linia 1: SSH-2.0-OpenSSH_8.2p1: comanda nu a fost găsită
Cum fac să funcționeze comanda SSH care rulează într-un script prin ProxyCommand?