Mein Verständnis der Funktionsweise von ~ / .ssh / config ist, dass jede 'Host'-Zeile für jeden Host wirksam wird, der nach diesem Punkt in der Konfigurationsdatei übereinstimmt.
Ich habe eine Reihe von Personal Servern und Arbeitsservern, zu denen ich eine Verbindung herstellen muss. Ich versuche etwas wie das Folgende zu tun:
# Allgemeine Einstellungen ControlMaster auto ControlPath ~/.ssh/controlmaster/%r@%h:% p ForwardAgent ja ForwardX11 ja GSSAPIAuthentication No. PubkeyAuthentication ja # Personal Server Gastgeber * Benutzer harleypig IdentityFile ~ / .ssh / personal_id_rsa Host host1 Hostname host1.com Host host2 Hostname host2.com # Arbeitsserver Gastgeber * Benutzer alan.young IdentityFile ~ / .ssh / work_id_rsa Host-Arbeit1 Hostname work1.companyserver.com Host work2 Hostname work2.companyserver.com Gastgeber * Benutzer devuser Host dev1 Hostname dev1.companyserver.com Host dev2 Hostname dev2.companyserver.com
Die Dokumente scheinen darauf hinzudeuten, dass host1 und host2 'personal_id_rsa' und den Benutzer harleypig verwenden sollten. work1, work2, dev1 und dev2 sollten 'work_id_rsa' verwenden und die ersten beiden sollten der Benutzer 'alan.young' sein und dev1 und dev2 sollten der Benutzer 'devuser' sein
Dies geschieht jedoch nicht. Was auch immer "Host" ist, mit dem alle folgenden Hosts eine Verbindung herstellen möchten. Missverstehe ich etwas oder vermisse ich etwas?
Antworten:
Aus dem
ssh_config
Handbuch :In Ihrem Beispiel verwenden also alle Hosts
User harleypig
undIdentityFile ~/.ssh/personal_id_rsa
.Stellen Sie sich
Host
Direktiven mit Platzhaltern als Fallbacks vor: Verwenden Sie die folgenden Einstellungen nur, wenn sie noch nicht festgelegt wurden. Sie müssen so etwas schreiben:Sie können mehrere Muster in eine
Host
Zeile einfügen, wenn ein bestimmter Satz von Host-Aliasnamen nicht mit Platzhaltern abgeglichen werden kann, zHost host* more* outlier
.quelle
Du machst es definitiv falsch.
Host *
als letzten Eintrag setzen.Host *
Einträge habenWenn Ihre Arbeitsmaschinen ein Namensformat haben, das Sie so verallgemeinern können, dass es nur auf die Arbeitsmaschinen zielt, z. B .: machine1.work.com, host.work.com, fileserver.work.com, dann können Sie Ihre Arbeitsmaschinen wie folgt ausrichten:
Gleiches gilt für Ihre persönlichen Maschinen.
quelle
Host *
scheint das Setzen am Anfang der Datei gut zu funktionieren. Vielleicht übertrifft die Tatsache, dass Sie einen Platzhalter verwenden, die Tatsache, dass dies der erste Eintrag ist, wenn Sie Prioritäten setzen?Host *.work.com
Syntax ungültig. Es funktioniert nur umgekehrt:Host myserver*
Host *subdomain.com
es nicht reagieren.