Was ist los mit meiner OpenSSH Include-Direktive?

12

Kürzlich wurde OpenSSH unter macOS Sierra auf 7.3p1 aktualisiert, was bedeutet, dass die IncludeKonfigurationsanweisung verfügbar ist , hurra!

Ich habe jedoch Probleme, es tatsächlich zu benutzen.

Ich habe folgendes ~/.ssh/config:

Host github.com
Hostname github.com
User git
IdentityFile ~/.ssh/keys/github_rsa

Host den
HostName narzt-desktop.local
User camden
GSSAPIAuthentication no
AddressFamily inet

Host walle
User CamdenNarzt
HostName WALLE.local
AddressFamily inet
GSSAPIAuthentication no

Include ~/.ssh/config.d/*

Ich habe hier gesehen, dass es möglicherweise eine nützliche Debug-Ausgabe gibt, wenn ich -vmeinen ssh-Befehlen eine Reihe von Flags hinzufüge. Wenn ich jedoch die Konfiguration für einen Host in einer der enthaltenen Dateien teste, erhalte ich Folgendes:

$ \ssh -vvvvG git-codecommit.us-east-1.amazonaws.com
OpenSSH_7.3p1, LibreSSL 2.4.1
debug1: Reading configuration data /Users/camdennarzt/.ssh/config
debug3: /Users/camdennarzt/.ssh/config line 31: Including file /Users/camdennarzt/.ssh/config.d/family.conf depth 0 (parse only)
debug1: Reading configuration data /Users/camdennarzt/.ssh/config.d/family.conf
debug3: /Users/camdennarzt/.ssh/config line 31: Including file /Users/camdennarzt/.ssh/config.d/icloud.conf depth 0 (parse only)
debug1: Reading configuration data /Users/camdennarzt/.ssh/config.d/icloud.conf
debug3: /Users/camdennarzt/.ssh/config line 31: Including file /Users/camdennarzt/.ssh/config.d/metabolistics.conf depth 0 (parse only)
debug1: Reading configuration data /Users/camdennarzt/.ssh/config.d/metabolistics.conf
debug3: /Users/camdennarzt/.ssh/config line 31: Including file /Users/camdennarzt/.ssh/config.d/scanimetrics.conf depth 0 (parse only)
debug1: Reading configuration data /Users/camdennarzt/.ssh/config.d/scanimetrics.conf
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 20: Applying options for *
debug1: /etc/ssh/ssh_config line 56: Applying options for *
user camdennarzt
hostname git-codecommit.us-east-1.amazonaws.com
port 22
addressfamily any
batchmode no
canonicalizefallbacklocal yes
canonicalizehostname false
challengeresponseauthentication yes
checkhostip yes
compression no
controlmaster false
enablesshkeysign no
clearallforwardings no
exitonforwardfailure no
fingerprinthash SHA256
forwardagent no
forwardx11 no
forwardx11trusted no
gatewayports no
gssapiauthentication no
gssapidelegatecredentials no
hashknownhosts no
hostbasedauthentication no
identitiesonly no
kbdinteractiveauthentication yes
nohostauthenticationforlocalhost no
passwordauthentication yes
permitlocalcommand no
protocol 2
proxyusefdpass no
pubkeyauthentication yes
requesttty auto
rhostsrsaauthentication no
rsaauthentication yes
streamlocalbindunlink no
stricthostkeychecking ask
tcpkeepalive yes
tunnel false
useprivilegedport no
verifyhostkeydns false
visualhostkey no
updatehostkeys false
canonicalizemaxdots 1
compressionlevel 6
connectionattempts 1
forwardx11timeout 1200
numberofpasswordprompts 3
serveralivecountmax 3
serveraliveinterval 0
ciphers [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc
hostkeyalgorithms [email protected],[email protected],[email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
hostbasedkeytypes [email protected],[email protected],[email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
kexalgorithms [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1
loglevel DEBUG3
macs [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
pubkeyacceptedkeytypes [email protected],[email protected],[email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
xauthlocation /opt/X11/bin/xauth
identityfile ~/.ssh/id_rsa
identityfile ~/.ssh/id_dsa
identityfile ~/.ssh/id_ecdsa
identityfile ~/.ssh/id_ed25519
canonicaldomains
globalknownhostsfile /etc/ssh/ssh_known_hosts /etc/ssh/ssh_known_hosts2
userknownhostsfile ~/.ssh/known_hosts ~/.ssh/known_hosts2
sendenv LANG
sendenv LC_*
connecttimeout none
tunneldevice any:any
controlpersist no
escapechar ~
ipqos lowdelay throughput
rekeylimit 0 0
streamlocalbindmask 0177

(Ignorieren Sie die Zeilennummern im ersten Bit. Ich habe einige Kommentare gelöscht, um Platz in der Frage zu sparen.) Der Benutzer sollte der in der ~/.ssh/config.d/metabolistics.confDatei angegebene Benutzer sein , und die Identitätsdatei sollte ebenfalls die in der enthaltenen Konfigurationsdatei angegebene sein. Ich kann den Inhalt der ~/.ssh/config.d/metabolistics.confDatei nicht veröffentlichen, aber das Format ist genau das gleiche wie das der Hauptdatei ~/.ssh/config, jedoch ohne weitere Zusätze.

Ich habe die Berechtigungen überprüft und sie sehen für mich gut aus:

$ ls -lhRa ~/.ssh/config* 
-rw-------  1 camdennarzt  staff   541B  1 Jan 14:22 /Users/camdennarzt/.ssh/config

/Users/camdennarzt/.ssh/config.d:
total 32
drwxr-xr-x  6 camdennarzt  staff   204B  1 Jan 14:37 .
drwx------  9 camdennarzt  staff   306B  1 Jan 14:22 ..
-rw-------  1 camdennarzt  staff   260B  1 Jan 14:16 family.conf
-rw-------  1 camdennarzt  staff   303B  1 Jan 14:17 icloud.conf
-rw-------  1 camdennarzt  staff   524B  1 Jan 14:15 metabolistics.conf
-rw-------  1 camdennarzt  staff   1.6K  1 Jan 14:15 scanimetrics.conf
Camden Narzt
quelle

Antworten:

20

Ich habe es selbst herausgefunden. Der Hinweis war in der ssh_configManpage:

 Include
         Include the specified configuration file(s).  Multiple pathnames may be specified and each pathname may contain glob(3) wildcards and, for user configurations, shell-like
         ``~'' references to user home directories.  Files without absolute paths are assumed to be in ~/.ssh if included in a user configuration file or /etc/ssh if included from
         the system configuration file.  Include directive may appear inside a Match or Host block to perform conditional inclusion.

Ich hatte meine IncludeAnweisung hinter einer HostDirektive, so dass sie in die Konfiguration dieses Hosts aufgenommen wurde.

Camden Narzt
quelle
8
Mit anderen Worten, die IncludeDirektive muss an den Anfang der configDatei gehen (vor dem "Körper" aus HostBlöcken)
Lucianf
1
Danke, obwohl das aus den Dokumenten folgt, ist es nicht sofort offensichtlich, wenn man herausfinden will, warum eine Konfiguration nicht funktioniert :)
Larsks
1

nicht wirklich. Es ist ein Kurzschlussfehler bei der Verwendung des SSHCONF_NEVERMATCH-Flags. Ich arbeite an Unterschieden, um das Chaos zu beheben. Includes sollten überall (und auch rekursiv) sein können, sei es im Hauptteil oder in einem Host | Match-Block. Das einzig schwierige ist zu wissen, wann Sie den Stapel von read_config_file_depth () abgewickelt haben und die Verarbeitung von Host | Match wieder aufnehmen können.

Ich werde in meiner Filiale posten, wenn ich etwas habe.

MattP
quelle
1

Sie können die IncludeAnweisung am Ende der Datei belassen, wenn Sie sie vorangestellt haben Match all. Dies beendet den vorherigen Host / Match und schließt dann immer die Datei (en) bedingt ein. Die Datei würde also enden mit:

Match all
Include config.d/*
Iiridayn
quelle
Abgesehen davon gelten nur Zeilen, die mit #oder leere Zeilen beginnen, als Kommentare. Sie können keinen Kommentar in dieselbe Zeile wie Matchoder setzen Host.
Iiridayn