Pregunta Problemas para implementar el reenvío de ssh-agent a través de ssh y luego su


Tengo un servidor web con un usuario sin privilegios dedicado que ejecuta la instancia de apache en el cuadro. El código php de la aplicación que el servidor web ejecuta está en un repositorio github privado que de vez en cuando necesito recuperar para actualizar.

Deseo utilizar mis credenciales personales (mi id_rsa clave local), pero por razones de seguridad, configuré la caja para que solo pueda acceder al cuadro a través de una segunda cuenta que no sea root con acceso sudo, y luego sudo -iu username en el usuario del servidor web.

Intenté habilitar el reenvío de ssh-agent, e incluso tuve sudo para mantener la variable de entorno SSH_AUTH_SOCK, pero el archivo de calce de autenticación tiene los permisos incorrectos (700 para el usuario al que ssh'd ingresé).

Comprobé que la clave se ha agregado al agente y que es accesible desde el primer usuario. lo intenté ssh-add -L del usuario del servidor web y obtuvo una respuesta que dice que no se puede conectar a ssh-agent. Sospecho que esto es porque los permisos son incorrectos.

¿Hay alguna manera de cambiar los permisos de forma automatizada?

¿O estoy yendo sobre esto de la manera incorrecta?


2


origen


¿Por qué no configuras tu clave para la otra cuenta y solo ssh directamente a esa cuenta? - Zoredache
Agregar más pasos por sí mismo no hace que su sistema sea más seguro. En este caso, agregaste la oportunidad de configurar incorrectamente el sudoers el archivo es excesivamente permisivo y no ha dificultado el acceso a la cuenta real (aún necesitaría la clave privada correcta). De hecho, la única razón por la que puedo pensar para su configuración sería asegurarme de que la cuenta de roles no lo hace tener acceso a ssh-agent ... - Gabe


Respuestas:


Tuve el mismo problema, en una caja de Gentoo, donde puedo iniciar sesión solo como usuario normal pero necesito usar el reenvío de agente para la cuenta raíz. De man su:

'-metro'

'-pag'

'--Preserve-environment'   No cambie las variables de entorno HOME, USER, LOGNAME o SHELL. Ejecute el shell proporcionado en la variable de entorno SHELL en lugar del shell desde la entrada passwd del usuario, a menos que el usuario que ejecuta su no sea el superusuario y el shell del usuario esté restringido. Un shell restringido es uno que no figura en el archivo / etc / shells, o en una lista compilada si ese archivo no existe. Las partes de lo que hace esta opción pueden ser anuladas por --login y --shell.

Asi que

su -m -

conservado el $SSH_AUTH_SOCK variable de entorno y me dio el resultado deseado.


0