Error de "propietario o permisos incorrectos" al usar ssh.exe de Cygwin

29

Estoy tratando de usar ssh.exe en Cygwin (en Windows 7). Copié un configarchivo en c:\cygwin\home\[USERNAME]\.ssh. Cuando ejecuto ssh(por ejemplo, ssh -vT [email protected]) me sale el siguiente error:

OpenSSH_5.9p1, OpenSSL 0.9.8r 8 de febrero de 2011 Propietario o permisos incorrectos en /home/[USERNAMEfont>/.ssh/config

¿Cómo puedo sshleer mi archivo de configuración?

Rebecca Scott
fuente

Respuestas:

46

Después de hacer lo anterior, siempre recibí esto:

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

y el error en .ssh/config. Así que me he ejecutado chownen la .sshcarpeta, y de chmodnuevo así:

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

y entonces:

> chmod -R 600 .ssh/

y finalmente lo conseguí funcionando:

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

Editar (para bash en Windows10)

Cuando recibas el error ...

Error al agregar el host a la lista de hosts conocidos (/PATH_TO_HOME/USERNAME/.ssh/known_hosts).

Asegúrate de que known_hosts sea grabable

$ chmod 755 hosts_conocidos

Nota: creo que solo necesita establecer 600 para su clave privada

Entonces, intente ssh.

Cuando tengas..

Se agregó permanentemente 'HOST_IP' (RSA) a la lista de hosts conocidos.

Puedes reemplazar el modo 600

$ chmod 600 known_hosts

PD : Creo que esto es un error en Windows 8.

Joaolvcm
fuente
La respuesta aceptada no funcionó para mí, pero esto sí. ¡Gracias!
Achal Dave
Además, este es un error bastante extraño. En mi computadora (W8.1), editar el archivo .ssh / config en Vim siempre conduce a este error. Es extremadamente molesto, ya que cada cambio en mi configuración ssh requiere ejecutar estos comandos.
Achal Dave
44
Y solo para agregar a la rareza, si está utilizando una versión de Windows que no está en inglés, asegúrese de utilizar la traducción local de "usuarios" al emitir este comando. Por ejemplo, en holandés se convierte en "chown -R: Gebruikers .ssh"
Alexander Kellett el
1
Para mí, esto funcionó: chown -R m0j0: Users .ssh && chmod -R go-rwx .ssh
m0j0
1
Gracias, esto también funcionó para mí, en alemán debes usarlochown -R [Username]:Benutzer .ssh/
con
20

Esta respuesta se copia literalmente de /superuser//a/875934/82032 . Esta es la única respuesta que me funcionó después de una actualización reciente de Cygwin.

No olvides las ACL

Nada funcionó para mí hasta que eliminé el archivo de ACL y restablecí los permisos.

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

#reset permissions
chmod 0600 ~/.ssh/config

Puede usar getfaclpara ver la ACL actual en un archivo.

getfacl ~/.ssh/config

Antes de eliminar las ACL (Rotas):

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

Despues de trabajar)

# file: config
# owner: myusername
# group: None
user::rw-
group::---
other:---
gdw2
fuente
Esto es lo que tuve que hacer después de actualizar cygwin
blockloop
1
Esto requiere cygwin 1.7.34-6
ClintM
¡Esto es lo que funcionó para mí!
Ashutosh Jindal
9

Verifique los permisos del configarchivo utilizando el lscomando de Cygwin :

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

Probablemente será algo como esto:

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

El archivo de configuración debe pertenecer a [USERNAME]. Prueba esto:

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

ls -laAhora debería mostrar el propietario correcto. Si eso todavía no funciona, intente restablecer el modo (permisos):

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

Para unix y OSX

Muy simple:

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

Para ventanas

Si el archivo es un enlace simbólico de Windows (NTFS), lo anterior no funcionará. Debes convertirlo en un archivo normal. No estoy seguro por qué.

Si no tiene openssh o cygwin, use chocolatey para instalarlo fácilmente.

choco install cyg-get

Abra la Terminal Cygwin que se instaló con chocolatey y ejecútela (tenga en cuenta que ssh-keygencrea nuevas claves):

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

Verifique que las claves estén allí (o reemplácelas con las claves que desee) y luego en el shell Cygwin:

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

O para el raro caso de que esté usando (y generó las claves) el paquete SSH de chocolatey :

chown -R $USER:users  /cygdrive/c/Users/$USER/.ssh
chmod -R 600 /cygdrive/c/Users/$USER/.ssh
Jonathan
fuente
Esto suele ser para mí, ya que el grupo suele estar equivocado en los archivos.
Alan Krueger
3

Nota importante si su Windows no está en inglés de EE. UU .: el nombre del grupo de "usuarios" depende de la configuración regional. Por ejemplo, si su Windows está en español, deberá cambiar la propiedad de los archivos conchown $USER:Usuarios *

RAKK
fuente
1

Ninguno de estos (chmod / chown / icacls / setacl / copyacls / explorer> security) funcionó en mi cygwin64 / win7 / admin, finalmente esto funciona con cygwin64/ssh -F ~/.ssh/configotras soluciones: usar ssh más antiguo en cygwin32 o ssh en git para Windows.

mosh
fuente
El uso -Fresolverá el problema con config, pero no resolverá los permisos para claves privadas.
Jari Turkia
0

Para aquellos que usan noaclen ruta con ~/.sshdir, la solución simple es crear un enlace simbólico 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 noaclno hay forma de establecer permisos que no sean rwxr-xr-xo rw-r--r--. Como la /jerarquía debería estar sin noacl(o debería estar con acl), puede crear un directorio aquí y señalar los lugares problemáticos para las aplicaciones de Cygwin.

gavenkoa
fuente
1
Dado que este es un directorio, la solución simple sería usar una unión, porque eso no requiere los privilegios necesarios para establecer un enlace simbólico. Ese sería mklink /jentonces o la junctionherramienta de la Suite Sysinternals.
0xC0000022L
0

tldr: es posible que hayas creado la configuración como administrador

Solución

Estas soluciones pueden ser excesivas si terminó creando erróneamente el archivo como administrador e intentando usar el archivo con permisos locales.

  • Copie el contenido de su configuración ssh
  • Eliminar el archivo
  • Abra un nuevo shell (local - no administrador)
  • Navegue a la ruta donde se almacena su configuración ( generalmente ~/.sshen PowerShell o %userprofile%\.sshen cmd )
  • correr notepad .\config

Comandos simples (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.
fuente