"Fehlerhafter Besitzer oder Berechtigungen" bei Verwendung von ssh.exe von Cygwin

29

Ich versuche, ssh.exe in Cygwin (in Windows 7) zu verwenden. Ich habe eine configDatei in kopiert c:\cygwin\home\[USERNAME]\.ssh. Beim Ausführen ssh(zum Beispiel ssh -vT [email protected]) wird folgende Fehlermeldung angezeigt:

OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011 Unzulässiger Besitzer oder Berechtigungen für /home/[USERNAME[/.ssh/config

Wie kann ich sshmeine Konfigurationsdatei lesen?

Rebecca Scott
quelle

Antworten:

46

Nachdem ich wie oben verfahren habe, habe ich immer folgendes erhalten:

total 22
drwxrwxr-x+ 1 jl None    0 Sep  9 18:44 .
drwxrwxr-x+ 1 jl None    0 Sep  9 18:44 ..
-rw-rw----  1 jl None  129 Jul  1 14:30 config

und der fehler weiter .ssh/config. Also habe ich chownden .sshOrdner durchlaufen lassen und chmodnochmal so:

> chown -R [USERNAME]:users .ssh/

und dann:

> chmod -R 600 .ssh/

und endlich habe ich es geschafft:

total 29
drwxrwxr-x+ 1 jl None     0 Sep  9 18:44 .
drwxrwxrwt+ 1 jl None     0 Sep  9 18:44 ..
drw-------+ 1 jl Users    0 Sep  9 18:44 .ssh

Bearbeiten (für Bash unter Windows 10)

Wenn Sie den Fehler erhalten ..

Fehler beim Hinzufügen des Hosts zur Liste der bekannten Hosts (/PATH_TO_HOME/USERNAME/.ssh/known_hosts).

Stellen Sie sicher, dass known_hosts beschreibbar ist

$ chmod 755 known_hosts

Hinweis: Ich glaube, Sie müssen nur 600 für Ihren privaten Schlüssel festlegen

Versuchen Sie dann, ssh.

Wenn du bekommst..

'HOST_IP' (RSA) dauerhaft zur Liste der bekannten Hosts hinzugefügt.

Sie können den Modus 600 ersetzen

$ chmod 600 known_hosts

PS : Ich denke, das ist ein Fehler in Windows 8.

Joaolvcm
quelle
Die akzeptierte Antwort hat bei mir nicht funktioniert, aber das hat funktioniert. Vielen Dank!
Achal Dave
Auch das ist ein ziemlich seltsamer Fehler. Auf meinem Computer (W8.1) führt das Bearbeiten der Datei .ssh / config in Vim immer zu diesem Fehler. Es ist extrem ärgerlich, da jede Änderung an meiner ssh-Konfiguration das Ausführen dieser Befehle erfordert.
Achal Dave
4
Wenn Sie eine nicht englische Version von Windows verwenden, sollten Sie bei der Ausgabe dieses Befehls auch die Gebietsschema-Übersetzung von "users" verwenden. Zum Beispiel wird es auf Niederländisch "chown -R: Gebruikers .ssh"
Alexander Kellett
1
Bei mir hat das geklappt: chown -R m0j0: Benutzer .ssh && chmod -R go-rwx .ssh
m0j0
1
Danke, das hat auch bei mir funktioniert, auf Deutsch musst duchown -R [Username]:Benutzer .ssh/
con
20

Diese Antwort wurde wörtlich von https://superuser.com/a/875934/82032 kopiert . Dies ist die einzige Antwort, die nach einem kürzlich durchgeführten Cygwin-Upgrade für mich funktioniert hat.

Vergessen Sie nicht die ACLs

Für mich hat nichts funktioniert, bis ich die Datei mit den ACLs entfernt und die Berechtigungen zurückgesetzt habe.

#remove ACLs
setfacl -b ~/.ssh/config

#reset permissions
chmod 0600 ~/.ssh/config

Mit können Sie getfacldie aktuelle ACL einer Datei anzeigen.

getfacl ~/.ssh/config

Bevor ich die ACLs entfernt habe (defekt):

# owner: Administrators
# group: None
user::rw-
group::---
group:Authenticated Users:rwx
group:SYSTEM:rwx
mask:rwx
other:---

Nach der Arbeit)

# file: config
# owner: myusername
# group: None
user::rw-
group::---
other:---
gdw2
quelle
Das musste ich tun, nachdem ich cygwin
blockloop
1
Dies erfordert Cygwin 1.7.34-6
ClintM
Das hat bei mir funktioniert!
Ashutosh Jindal
9

Überprüfen Sie die Berechtigungen der configDatei mit dem lsBefehl von Cygwin :

> c:\cygwin\bin\ls.exe -la c:\cygwin\home\[USERNAME]\.ssh

Es wird wahrscheinlich so etwas sein:

total 5
drwxrwxrwt+ 1 Administrators None  0 Oct 20 17:02 .
drwxr-xr-x+ 1 [USERNAME]     None  0 Oct 19 08:15 ..
-rw-------  1 Administrators None 57 Oct 20 16:58 config

Die Konfigurationsdatei muss zu [USERNAME] gehören. Versuche dies:

> c:\cygwin\bin\chown.exe [USERNAME] c:\cygwin\home\[USERNAME]\.ssh\config

ls -lasollte nun den richtigen Besitzer anzeigen. Wenn das immer noch nicht funktioniert, versuche den Modus zurückzusetzen (Berechtigungen):

> c:\cygwin\bin\chmod.exe 700 c:\cygwin\home\[USERNAME]\.ssh\config
Rebecca Scott
quelle
9

Für Unix & OSX

Recht einfach:

chown -R $USER:users ~/.ssh/
chmod -R 600 ~/.ssh/

Für Windows

Wenn es sich bei der Datei um eine symbolische Windows-Verknüpfung (NTFS) handelt, funktioniert das oben Genannte nicht. Sie müssen es zu einer regulären Datei machen. Ich bin mir nicht sicher warum.

Wenn Sie OpenSh oder Cygwin nicht haben, verwenden Sie chocolatey, um es einfach zu installieren.

choco install cyg-get

Öffnen Sie das mit chocolatey installierte Cygwin Terminal und führen Sie es aus (beachten Sie, dass ssh-keygenneue Schlüssel erstellt werden):

cyg-get install openssh
ssh-keygen
cd ~/.ssh && explorer.exe .

Überprüfen Sie, ob Schlüssel vorhanden sind (oder ersetzen Sie sie durch die gewünschten Schlüssel), und führen Sie dann in der Cygwin-Shell folgende Schritte aus:

chown -R $USER:users ~/.ssh/
chmod -R 600 ~/.ssh/

Oder für den seltenen Fall, dass Sie das SSH- Paket von chocolatey verwenden (und die Schlüssel daraus generieren) :

chown -R $USER:users  /cygdrive/c/Users/$USER/.ssh
chmod -R 600 /cygdrive/c/Users/$USER/.ssh
Jonathan
quelle
Dies ist in der Regel für mich, da die Gruppe in den Dateien in der Regel falsch ist.
Alan Krueger
3

Wichtiger Hinweis, wenn Ihr Windows nicht in US-Englisch ist: Der Name der Benutzergruppe ist vom Gebietsschema abhängig. Wenn Ihr Windows beispielsweise auf Spanisch ist, müssen Sie den Besitz der Dateien mit ändernchown $USER:Usuarios *

RAKK
quelle
1

Keiner dieser Befehle (chmod / chown / icacls / setacl / copyacls / explorer> security) funktionierte auf meinem cygwin64 / win7 / admin. Letztendlich funktioniert dies mit cygwin64/ssh -F ~/.ssh/configanderen Lösungen, wenn Sie älteres ssh in cygwin32 oder ssh in git für Windows verwenden.

mosh
quelle
Mit -Fwird das Problem mit config, aber nicht die Berechtigungen für private Schlüssel gelöst.
Jari Turkia
0

Für diejenigen, die noaclim Pfad mit ~/.sshdir eine einfache Lösung verwenden, ist das Erstellen einer systemeigenen symbolischen NTFS-Verknüpfung:

cmd# mklink c:\home\.ssh c:\opt\cygwin\home\misc\.ssh
symbolic link created for c:\home\.ssh <<===>> c:\opt\cygwin\home\misc\.ssh

Mit noaclgibt es keine Möglichkeit, andere Berechtigungen als rwxr-xr-xoder festzulegen rw-r--r--. Da die /Hierarchie ohne noacl(oder mit acl) sein sollte, können Sie hier ein Verzeichnis erstellen und auf problematische Stellen für Cygwins Apps verweisen.

gavenkoa
quelle
1
Da dies ein Verzeichnis ist, würde die einfache Lösung eine Junction verwenden, da hierfür nicht die erforderlichen Berechtigungen zum Festlegen einer symbolischen Verknüpfung erforderlich sind. Das wäre mklink /jdann oder das junctionTool aus der Sysinternals Suite.
0xC0000022L
0

tldr: Möglicherweise haben Sie die Konfiguration als Administrator erstellt

Lösung

Diese Lösungen sind möglicherweise zu viel des Guten, wenn Sie versehentlich die Datei als Administrator erstellt und versucht haben, sie mit lokalen Berechtigungen zu verwenden.

  • Kopieren Sie den Inhalt Ihrer SSH-Konfiguration
  • Löschen Sie die Datei
  • Öffne eine neue Shell (lokal - nicht Admin)
  • Navigieren Sie zu dem Pfad, in dem Ihre Konfiguration gespeichert ist ( normalerweise ~/.sshin PowerShell oder %userprofile%\.sshin cmd ).
  • Lauf notepad .\config

Einfache Befehle (PowerShell):

$sshPath = '~/.ssh/config'
$content = cat $sshPath
# In case the line above fails, this check will prevent your current config to get deleted
if ($content) {
  rm $sshPath
  $content | Out-File -en ascii $sshPath
}
AP.
quelle