Falls es darauf ankommt:
- Betriebssystem: Ubuntu 10.04
- SSH: OpenSSH_5.3p1 Debian-3ubuntu5
Ich möchte, dass eine SSH-Konfigurationsdatei eine andere enthält. Der Anwendungsfall wäre, zu definieren, was ich will in meiner Standarddatei .ssh/config
und dann ein paar zusätzliche Dinge in einer separaten Datei (z ~/.ssh/foo.config
. B. ) voranstellen . Ich möchte, dass die zweite Datei die erste enthält, damit ich nicht alles in der ersten duplizieren muss. Ist das machbar? Vielen Dank!
Antworten:
Ab 7.3p1 gibt es das
Include
Schlüsselwort, mit dem Sie Konfigurationsdateien einfügen können.Zum Beispiel könnten Sie in
~/.ssh/config
:und in
~/.ssh/config.d/home
:Verwenden Sie in den Kommentaren das Folgende, um alle Dateien in das
config.d
Verzeichnis aufzunehmen:quelle
Include config.d/*
diese Option , um alle Einträge in aufzunehmenconfig.d
.Host
Einträge angehängt werden .Nein, meines Wissens ist dies nicht möglich.
Hier sind die Links zu den entsprechenden offenen Feature Requests / Bug Tickets:
https://bugzilla.mindrot.org/show_bug.cgi?id=1585
https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/739495
quelle
Slightly modified patch applied, this will be in openssh-7.3
Wenn Sie einen ssh-Client starten möchten, können Sie dies in bash tun:
dann benutzt du ssh normal und es werden beide Dateien in dieser Reihenfolge gelesen.
Für den Server-Daemon können
sshd
Sie das Gleiche tun , indem Sie-f
anstelle von einfach-F
aufschreiben, wo Sie den Daemon direkt starten. Du brauchst keinen Alias.Eine zweite Möglichkeit besteht laut Manpage darin, die systemweite Konfiguration
/etc/ssh/ssh_config
und die Benutzerkonfiguration einzugeben~/.ssh/config
.Update Anscheinend gibt es ein Problem mit einigen Bash-Versionen und wie die Geräte erstellt werden. (siehe http://bugs.alpinelinux.org/issues/1465 )
Dies ist eine Problemumgehung (obwohl meiner Meinung nach hässlich):
Wenn Sie möchten, können Sie daraus eine Funktion (oder ein Skript) erstellen:
quelle
~/.ssh/config
, 3./etc/ssh/ssh_config
, sollten Sie~/.ssh/config
die Befehlszeile nicht ebenfalls weitergeben müssen . Nuralias ssh='ssh -F ~/.ssh/foo.config'
und~/.ssh/config
sollte danach abgeholt werden. Solange es Ihnen nichts ausmachtfoo.config
, zuerst geladen zu werden, sollte dies sauberer sein als die oben beschriebene Problemumgehung.Ab ssh 7.3 (veröffentlicht am 1. August 2016) ist eine
Include
Direktive verfügbar.(Hier ist der Link zum behobenen Fehlerbericht, der auch den Patch enthält: https://bugzilla.mindrot.org/show_bug.cgi?id=1585#c24 )
quelle
Ähnlich wie bei den anderen "hässlichen" hier ist mein Einzeiler:
quelle
sftp
Befehl keine Neuberechnung der Konfiguration auslöst.Nun, ich betrüge ein bisschen, um das zu tun. In meinen .profile-ish-Bash-Dateien gibt es einen Block, der beim Anmelden verschiedene Teile meines Home-Verzeichnisses ersetzt. Daher erstelle ich jedes Mal einen neuen. Beispiel:
Auf diese Weise kann ich der ssh-Konfigurationsdatei nur Konfigurationsblöcke hinzufügen, wenn ich mich auf Host A oder B, aber nicht auf meinen Heimsystemen befinde.
Jetzt weiß ich, dass sich jemand darüber beschwert, dass ein häufiges Anmelden zu einer übermäßigen Verlangsamung führen kann. In der Praxis habe ich das jedoch nie bemerkt. Und ich bin sicher, Sie könnten dies in ein Skript einfügen und es auch über cron auslösen.
quelle
Ich persönlich benutze diese Befehle, um die ssh-Konfiguration zu kompilieren:
oder:
da:
funktioniert bei mir nicht und kehrt zurück:
Ich hoffe, das wird Ihnen weiterhelfen.
quelle
Eine andere, FUSE-basierte Lösung (selbst nicht getestet):
https://github.com/markhellewell/sshconfigfs
"Anstatt weiterhin eine große Datei verwalten zu müssen, [...] erstellen Sie stattdessen eine Konfigurationsdatei dynamisch aus vielen kleineren logischen Blöcken."
Ich habe auch einen Artikel über FIFOs gefunden: http://www.linuxsysadmintutorials.com/multiple-ssh-client-configuration-files/
quelle
Keine dieser Alias-Lösungen funktioniert für
git
andere Programme alsssh
.Ich habe einen schnellen und schmutzigen zusammengeschlagen, aber Sie möchten ihn vielleicht verbessern.
Fügen Sie dieses Ihrem hinzu
~/.bashrc
Jedes Mal, wenn Sie eine Sitzung starten, werden alle Dateien in zusammengeführt
~/.ssh/config.d
. (Zeile 3)Der Nachteil dieser Version ist, dass wenn Sie die
~/.ssh/config
nächste Sitzung ändern, Ihre Änderungen verloren gehen, um zu verhindern, dass ich die vorhandene Datei in eine .bak-Datei verschiebe. (Zeile 2) Das Problem ist, dass Sie nach einer Weile eine Menge .bak-Dateien haben werden.quelle
is_anything_changed
BedingungenSie können die SSH-Version von Ubuntu auf Version 7.3 (getestet auf Ubuntu Xenial 16.04) problemlos aktualisieren, indem Sie Pakete von Yakkety installieren:
Überprüfen Sie die SSH-Version
Konfigurieren Sie SSH für die Verwendung von Includes aus dem Verzeichnis ~ / .ssh / config.d
quelle
Meine dumme Antwort:
Also habe ich mich damit abgefunden:
~/.ssh/config.d/
cat ~/.ssh/config.d/* > ~/.ssh/config
Include config.d/*
quelle
Ich kann auf meinem Computer auch kein SSH-Upgrade durchführen.
Ich habe GNU make verwendet, um die SSH-Konfigurationsdatei nur bei Bedarf zu generieren :
Dann ist ssh auf voreingenommen
Es wirkt wie ein Zauber.
quelle