Error de PUTTY: / bin / bash Operación no permitida cuando se conecta a Cygwin sshd

0

Cuando intento conectarme a un servidor SSH usando PuTTY, aparece un error:

/bin/bash: Operation not permitted

Y luego recibo un cuadro de mensaje que dice:

Connection closed by remote host

Esto comenzó a suceder inesperadamente hoy y no tengo idea de por qué, la conexión SSH solía funcionar bien antes de eso.

ingrese la descripción de la imagen aquí

¿Qué causa este error, y hay alguna forma de solucionarlo?

Editar: El servidor es un cuadro de Windows, no Linux, y está ejecutando sshd de Cygwin. También encontré esta publicación que creo que podría ser relevante: https://cygwin.com/ml/cygwin/2016-03/msg00097.html

sashoalm
fuente
1
Parece que / bin / bash se ha eliminado o su usuario no tiene permisos para ello. Probablemente deberías contactar al administrador y pedirle que lo arregle.
Mikael Kjær
¿Puedes iniciar sesión con otro usuario?
Zumo de Vidrio
@ MikaelKjær Hm, si falta bash, ¿no sería el mensaje de error "comando no encontrado" o algo así? Sin embargo, es probable que tengas razón sobre los permisos.
sashoalm
@ZumodeVidrio Le pregunté a una de mis colegas y ella obtuvo el mismo error.
sashoalm
Este error bash proviene del servidor Linux. La causa es quizás un mal comando en el archivo .bashrcdel perfil de usuario al que se está conectando.
harrymc

Respuestas:

4

Pasé mucho tiempo tratando de resolver el mismo problema. Accidentalmente tropecé con una solución aquí:

https://cygwin.com/ml/cygwin/2015-08/msg00162.html

En el servidor cygwin:

  1. Vaya a Panel de control> Herramientas administrativas.
  2. Seleccione Política de seguridad local> Políticas locales> Asignación de derechos de usuario.
  3. Haga clic con el botón derecho en Reemplazar un token de nivel de proceso y seleccione Seguridad o Propiedades.
  4. Haga clic en Agregar para agregar la cuenta en la que se está ejecutando sshd. (cyg_server en mi caso)
  5. gpupdate
  6. Reiniciar el servicio sshd

Ahora intenta conectarte a través de ssh ... Tuve éxito

Константин Брызгалов
fuente
2

Tuve este problema y lo resolví.

Inicialmente seguí la respuesta de Константин Брызгалов y pude iniciar sesión con una contraseña, pero no pude hacer funcionar la autenticación de clave pública. (Había creado una cuenta de administrador local cyg_server manualmente).

En una investigación adicional, estaba leyendo esta página y decía que debía evitar tener tanto un dominio como una cuenta local. Lo comprobé y tuve ambos; aparentemente alguien más en mi organización está ejecutando un servidor cygwin y ya había creado un cyg_server en el dominio, que se confundía con mi cuenta local.

Eliminé mi cuenta local de cyg_server, desinstalé el servicio sshd y reinstalé como se describe en esa página, y todo funcionó a la perfección. El truco consistía en decir "no" para usar la cuenta cyg_server existente y decirle a ssh-host-config que creara una cuenta "cyg_server1". Creó una cuenta local y configuró todo correctamente. Específicamente:

  1. cygrunsrv --stop sshd
  2. cygrunsrv --remove sshd
  3. Panel Ctrl> Cuentas de usuario> Cuentas de usuario del administrador> (eliminar cuenta local de cyg_server)
  4. mkpasswd -l -d> / etc / passwd
  5. mkgroup -l -d> / etc / group
  6. ssh-host-config
    • sobrescribir = sí
    • estricto = sí
    • CYGWIN = ntsec
    • usuario para ejecutar = cyg_server1
    • contraseña = {...}

Al verificar las cuentas de usuario, verá que cyg_server1 es de hecho una cuenta local pero tiene una configuración adicional.

maharvey67
fuente
1

Había olvidado esa pregunta, pero al final resolví mi problema volviendo a ejecutar la instalación ssh-host-configde mi servidor Cygwin (afortunadamente también tuve acceso a RDP).

Eso era todo lo que se necesitaba, pero no tengo idea de por qué funcionó.

sashoalm
fuente
1

Gracias Константин Брызгалов por señalarme en la dirección correcta, tuve exactamente el mismo problema.

Aquí se puede encontrar una solución más completa: https://cygwin.com/faq.html#faq.using.sshd-in-domain En realidad, hay 3 configuraciones de política que necesitan tener configurado el servidor cyg:

  • Actuar como parte del sistema operativo (SeTcbPrivilege)
  • Crear un objeto de token (SeCreateTokenPrivilege)
  • Reemplazar un token de nivel de proceso (SeAssignPrimaryTokenPrivilege)
Mun-dee
fuente
1

Aquí hay una manera más directa de hacer lo que dicen las publicaciones anteriores de Константин Брызгалов y Mun-dee. Ejecute un terminal cygwin como administrador y luego:

detener el sshd en ejecución:

net stop sshd

otorgue al usuario ssh los privilegios necesarios:

derechos de edición -a SeTcbPrivilege -u cyg_server

editrights -a SeAssignPrimaryTokenPrivilege -u cyg_server

editrights -a SeCreateTokenPrivilege -u cyg_server

reiniciar sshd:

inicio neto sshd

Uwe Mayer
fuente