SSH-Konfiguration mit dynamischer IP

SSH-Konfiguration mit dynamischer IP

Ich habe eine EC2-Instanz mit einer dynamischen IP und möchte eine direkte Verbindung damit herstellen, ohne .ssh/configsie bei jeder Änderung anpassen zu müssen.

Ich kann die IP abfragen mit

aws ec2 describe-instances --filters 'Name=tag:Name,Values=MYTAG' --query 'Reservations[0].Instances[0].NetworkInterfaces[0].Association.PublicIp' --output text

ProxyCommandJetzt möchte ich diesen Befehl zum Abschnitt in meiner Datei hinzufügen, .ssh/configerhalte jedoch einige Fehlermeldungen.

Dies ist der Abschnitt für diesen Host

Host ec2-instance
     User ubuntu
     IdentityFile my/pem/file.pem
     ProxyCommand bash -c "host=$(aws ec2 describe-instances --filters 'Name=tag:Name,Values=MYTAG' --query 'Reservations[0].Instances[0].NetworkInterfaces[0].Association.PublicIp' --output text); ssh ${host}"

Ich weiß ehrlich gesagt nicht, wie diese ProxyCommandOption funktioniert, und keiner man sshvon uns man ssh_configscheint es gut zu erklären.

kann dies erreicht werden?

Antwort1

ProxyCommand fungiert als Alternative für dieRohe TCP-Verbindung.Es ersetzt nicht die gesamte SSH-Verbindung – obwohl es oft zum Aufrufen verwendet wird ssh -W. Dabei wird jedoch trotzdem nur ein anderes SSH-System verwendet, um einen einfachen TCP-Tunnel bereitzustellen.

In Ihrer Situation sollte der ProxyCommand also eine einfache „TCP-Pipe“-Anwendung wie ncoder socatoder ausführen ncat– alles, was stdin/stdout an eine TCP-Verbindung anfügt, reicht aus:

Host ...
    ProxyCommand bash -c "host=...; nc $host %p"

Host ...
    ProxyCommand bash -c "host=...; socat STDIO TCP:$host:%p"

Ich würde wirklich empfehlen, alle komplexen Dinge aus Ihrer ~/.ssh/config in ein separates Skript zu verschieben, sodass Ihre Konfiguration einfach so aussehen könnte:

Host ...
    ProxyCommand ~/bin/ec2-connect %h %p

verwandte Informationen