Errore "Proprietario o autorizzazioni errati" durante l'utilizzo del ssh.exe di Cygwin


29

Sto cercando di utilizzare ssh.exe in Cygwin (in Windows 7). Ho copiato un configfile in c:\cygwin\home\[USERNAME]\.ssh. Quando eseguo ssh(ad esempio, ssh -vT git@bitbucket.org) viene visualizzato il seguente errore:

OpenSSH_5.9p1, OpenSSL 0.9.8r 8 feb 2011 Proprietario o autorizzazioni non validi su /home/[USERNAME[/.ssh/config

Come posso sshleggere il mio file di configurazione?

Risposte:


46

Dopo aver fatto come sopra, ho sempre avuto questo:

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

e l'errore acceso .ssh/config. Quindi ho eseguito chownla .sshcartella e di chmodnuovo così:

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

e poi:

> chmod -R 600 .ssh/

e finalmente l'ho fatto funzionare:

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

Modifica (per bash su Windows10)

Quando viene visualizzato l'errore ..

Impossibile aggiungere l'host all'elenco di host noti (/PATH_TO_HOME/USERNAME/.ssh/known_hosts).

Assicurati che known_hosts sia scrivibile

$ chmod 755 known_hosts

Nota: credo che devi solo impostare 600 per la tua chiave privata

Quindi, prova a ssh.

Quando avrai..

"HOST_IP" (RSA) è stato aggiunto in modo permanente all'elenco degli host noti.

È possibile sostituire la modalità 600

$ chmod 600 known_hosts

PS : Penso che questo sia un bug su Windows 8.


La risposta accettata non ha funzionato per me, ma ha funzionato. Grazie!
Achal Dave,

Inoltre, questo è un bug piuttosto strano. Sul mio computer (W8.1), la modifica del file .ssh / config in Vim porta sempre a questo errore. È estremamente fastidioso, poiché ogni modifica alla mia configurazione SSH richiede l'esecuzione di questi comandi.
Achal Dave,

4
E solo per aggiungere alla stranezza, se stai usando una versione non inglese di Windows, assicurati di usare la traduzione locale di "utenti" quando emetti questo comando. Ad esempio in olandese diventa "chown -R: Gebruikers .ssh"
Alexander Kellett

1
Per me ha funzionato: chown -R m0j0: Users .ssh && chmod -R go-rwx .ssh
m0j0

1
Grazie, ha funzionato anche per me, in tedesco devi usarlochown -R [Username]:Benutzer .ssh/
con l'

20

Questa risposta è copiata letteralmente da /superuser//a/875934/82032 . Questa è l'unica risposta che ha funzionato per me dopo un recente aggiornamento di Cygwin.

Non dimenticare gli ACL

Nulla ha funzionato per me fino a quando non ho rimosso il file ACL e ripristinato le autorizzazioni.

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

#reset permissions
chmod 0600 ~/.ssh/config

È possibile utilizzare getfaclper visualizzare l'ACL corrente su un file.

getfacl ~/.ssh/config

Prima di rimuovere gli ACL (Rotti):

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

Dopo il lavoro)

# file: config
# owner: myusername
# group: None
user::rw-
group::---
other:---

Questo è quello che dovevo fare dopo aver aggiornato cygwin
blockloop il

1
Ciò richiede cygwin 1.7.34-6
ClintM,

Questo è ciò che ha funzionato per me!
Ashutosh Jindal,

9

Controlla le autorizzazioni del configfile usando il lscomando di Cygwin :

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

Probabilmente sarà qualcosa del genere:

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

Il file di configurazione deve appartenere a [USERNAME]. Prova questo:

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

ls -laora dovrebbe mostrare il proprietario corretto. Se il problema persiste, prova a ripristinare la modalità (autorizzazioni):

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

9

Per unix e OSX

Abbastanza semplice:

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

Per Windows

Se il file è un collegamento simbolico di Windows (NTFS), quanto sopra non funzionerà. Devi renderlo un file normale. Non sono sicuro del perché.

Se non hai openssh o cygwin, usa chocolatey per installarlo facilmente.

choco install cyg-get

Apri Cygwin Terminal che è stato installato con chocolatey ed esegui (nota che ssh-keygencrea nuove chiavi):

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

Verificare che le chiavi siano presenti (o sostituirle con le chiavi desiderate), quindi nella shell Cygwin:

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

O per il raro caso in cui stai utilizzando (e hai generato le chiavi) il pacchetto SSH di chocolatey :

chown -R $USER:users  /cygdrive/c/Users/$USER/.ssh
chmod -R 600 /cygdrive/c/Users/$USER/.ssh

Questo di solito è per me, dal momento che il gruppo è di solito sbagliato nei file.
Alan Krueger il

3

Nota importante se Windows non è in inglese americano: il nome del gruppo "utenti" dipende dalle impostazioni locali. Ad esempio, se Windows è in spagnolo, dovrai cambiare la proprietà dei file conchown $USER:Usuarios *


1

Nessuno di questi (chmod / chown / icacls / setacl / copyacls / explorer> security) ha funzionato sul mio cygwin64 / win7 / admin, finalmente questo funziona con cygwin64/ssh -F ~/.ssh/configaltre soluzioni sono usare ssh più vecchio in cygwin32 o ssh in git per windows ..


L'utilizzo -Frisolverà il problema con config, ma non risolverà le autorizzazioni per le chiavi private.
Jari Turkia,

0

Per chi usa noaclin path con ~/.sshdir la soluzione semplice è quella di creare un link simbolico NTFS nativo:

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

Con noaclnon c'è modo di impostare permessi se non poi rwxr-xr-xo rw-r--r--. Poiché la /gerarchia dovrebbe essere priva noacl(o dovrebbe esserlo acl), è possibile creare una directory qui e indicare i punti problematici per le app di Cygwin.


1
Dato che si tratta di una directory, la soluzione semplice sarebbe utilizzare una giunzione, poiché ciò non richiede i privilegi richiesti per impostare un collegamento simbolico. Quello sarebbe mklink /jallora o lo junctionstrumento della Suite Sysinternals.
0xC0000022L

0

tldr: è possibile che tu abbia creato la configurazione come amministratore

Soluzione

Queste soluzioni potrebbero essere eccessive se hai finito per creare il file erroneamente come amministratore e provare a utilizzare il file con permessi locali.

  • Copia il contenuto della tua configurazione ssh
  • Elimina il file
  • Apri una nuova shell (locale - non amministratore)
  • Passare al percorso in cui è memorizzata la configurazione (in genere ~/.sshin PowerShell o %userprofile%\.sshin cmd )
  • Correre notepad .\config

Comandi semplici (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
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.