Hintergrund:
Ich habe einlokalSkript, das ausgeführt werden mussörtlichals Voraussetzung zum Herstellen einer SSH-Verbindung.
Das Skript funktioniert bereits, aber derzeit müssen Benutzer das Skript ausführen und dann eine SSH-Verbindung herstellen – zwei Schritte.Ich möchte, dass das in einem Schritt geschieht.
Beispiel eines ausgeführten Skripts aus der Sicht des Benutzers:
$ /scripts/generate-mfa-auth.sh
MFA Code: 12345
Configuring authorized_keys...
Success. You can now connect over ssh.
$ ssh [email protected]
Ziel / Problem:
Ich möchte, dass dieses Skript Benutzereingaben zulässt, wenn es von der SSH-Konfiguration ausgelöst wird.
Beispielsweise führt die folgende SSH-Konfiguration das Skript korrekt aus, aber eserlaubt dem Benutzer keine Interaktionund dem Benutzer wird nie eine Standardausgabe des Skripts angezeigt:
Match host bastion* exec "/scripts/generate-mfa-auth.sh"
Host bastion1.local.example.com
IdentityFile ~/.ssh/my-bastion-ssh-key
Host *local.example.com !bastion1.local.example.com
IdentityFile ~/.ssh/my-target-ssh-key
ProxyCommand ssh [email protected] -W %h:%p
Frage:
Gibt es eine Möglichkeit, dieses Skript zum Laufen zu bringen?interaktivbeim Aufruf aus der SSH-Konfiguration?
Antwort1
Mir ist keine Möglichkeit bekannt, dies mit einer SSH-Konfiguration zu tun, aber eine recht gängige Lösung besteht darin, ein Skript zu erstellen, das früher im installiert wird PATH
. Zum Beispiel
install -m 0755 -o root -g root /dev/null /usr/local/bin/ssh
cat <<EOF > /usr/local/bin/ssh
#!/usr/bin/env bash
read -p "mfa prompt: " my_input
echo $my_input
/usr/bin/ssh "$@"
EOF
Andere häufige Vorschläge beinhalten die Erstellung eines Alias oder einer Funktion, die dasselbe tut.
Links