wie führe ich einen SSH-Agenten in der Fish-Shell aus?

wie führe ich einen SSH-Agenten in der Fish-Shell aus?

Ich habe ausgeführt, eval `ssh-agent -s\` ich erhalte diesen Fehler

fish: Unknown command: `ssh-agent

Antwort1

Ihre Frage besteht aus zwei Teilen:

  • Warum wird beim Versuch eine Fehlermeldung angezeigt eval `ssh-agent -s`?
  • So aktivieren Sie ssh-agentdie Fish-Shell

Zunächst einmal heißt die Funktion, nach der Sie suchen, „Befehlsersetzung“. In Bash/POSIX-Shells gibt es hierfür zwei Möglichkeiten:

  • Backticks (z. B. `command`), wie Sie sie verwenden
  • $(command)

Von der Verwendung von Backticks wird dringend abgeraten. Wenn Sie also auf eine Dokumentation oder ein Blog stoßen, in der/dem diese verwendet werden, seien Sie sich bewusst, dass diese/r stark veraltet ist (oder nicht bekannt ist).

Wie Sie festgestellt haben, (command)ist die Gruppierung in Fish die „am besten unterstützte“ Methode zur Befehlsersetzung. Ab Fish 3.4.0 $(command)funktioniert diese Form jedoch auch. Verwenden Sie also entweder:

  • eval (ssh-agent -c)oder
  • eval $(ssh-agent -c)wird funktionieren
Wie führe ich einen SSH-Agenten in der Fish-Shell aus?

Ich empfehle jedoch die Verwendung vonkeychainzur Vereinfachung ssh-agentder Verwendung in Fish (und anderen Shells). Ignorieren Sie den Teil der Webseite, der besagt (wie @Charliesneath in den Kommentaren anmerkt):„Derzeit ist der Schlüsselbund nicht mit der Fish-Shell kompatibel.“ Die Webseite wurde seit einiger Zeit nicht mehr aktualisiert.

Keychain verfügt tatsächlich über integrierte Unterstützung für Fish (hinzugefügt im Jahr 2017) und kann universelle Variablen nutzen, um Ihre Schlüssel über mehrere Shell-Sitzungen hinweg synchron zu halten.

Wenn Sie beispielsweise zwei Fish Shell-Sitzungen geöffnet haben und in einer davon ssh-agent/ ausführen ssh-add, müssen Sie dasselbe auch in der anderen ausführen und Ihr Passwort erneut eingeben. Es gibtMöglichkeiten zum gemeinsamen Nutzen des Agenten für Shell-Sitzungen, aber Keychain erledigt das für Sie.

Keychain kann direkt aus den Repositories der meisten Distributionen installiert werden. Zum Beispiel sudo apt install keychain.

Es kann in Fish mit folgendem aktiviert werden:

keychain --eval <keyfile> | source

Ich habe dies in Fish wie folgt eingerichtet.

  • Erstellen Sie das folgende Skript in~/.config/fish/conf.d/keychain.fish

    if status is-login
        and status is-interactive
        # To add a key, set -Ua SSH_KEYS_TO_AUTOLOAD keypath
        # To remove a key, set -U --erase 
    SSH_KEYS_TO_AUTOLOAD[index_of_key]
        keychain --eval $SSH_KEYS_TO_AUTOLOAD | source
    end
    
  • set -Ua SSH_KEYS_TO_AUTOLOAD ~/.ssh/id...für die Taste(n), die Sie verwenden möchten.

Das ist so ziemlich alles. Wenn Sie eine Fish-Shell zum Anmelden starten und der Schlüssel nicht entsperrt ist, fragt Keychain nach dem Passwort und fügt es einer freigegebenen Datei hinzu ssh-agent. Wenn es bereits entsperrt ist, wird nicht erneut danach gefragt.

Sie können das Skript natürlich vereinfachen, indem Sie statische Schlüsselnamen einbetten. Ich bevorzuge universelle Variablen, um das Skript dynamisch zu halten. Dadurch kann ein einzelnes Skript in meinem Dotfiles-Repository gespeichert werden, obwohl ich auf verschiedenen Systemen unterschiedliche Schlüssel verwende.

Antwort2

Ich bekomme diese Lösung

laufen

eval (ssh-agent -c)

Referenz:https://wiki.archlinux.org/title/Fish#Evaluate_ssh-agent

Antwort3

Ich benutze fish_ssh_agentvon gihubhttps://github.com/ivakyb/fish_ssh_agent

github/ivakyb/fish_ssh_agent

Dieses Repo enthält auch einige wertvolle Hinweise zum Thema SSH, SSH-Agent, Fish-Shell.

verwandte Informationen