Hintergrund:

Hintergrund:

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

verwandte Informationen