sudo no puede acceder a la clave privada

sudo no puede acceder a la clave privada

Tengo un par de claves pública-privada que ~/.sshse utiliza para la conexión SSH a GitHub.

Para probar si configuré SSH con GitHub correctamente, usé , que funciona bien.ssh -T [email protected]

Además, si ejecuto el comando anterior como superusuario, funciona bien.

su
ssh -T [email protected]

Sin embargo, cuando uso sudo, el comando no funciona. Sospecho que no puede acceder al par de claves almacenado cuando ~/.sshse ejecuta consudo

El siguiente comando falla.

sudo ssh -T [email protected]

Puede replicar fácilmente el problema con cualquier distribución de Ubuntu yestePágina de ayuda de GitHub.

Editar:

Entiendo que puedo pasar la clave privada a sshlo siguiente:

ssh -i <path-to-private-key> -T [email protected]

Me pregunto por qué el uso hace que la clave privada sea inaccesible.sudo ssh -T [email protected]

Respuesta1

Hipótesis: hay un agente de autenticación ejecutándose para su usuario habitual y el agente tiene la clave.

sshgenerado a partir de un shell no elevado hereda la variable de entorno crucial SSH_AUTH_SOCKque le indica la ubicación del socket para comunicarse con el agente. sshpuede usar el agente, así es como normalmente usa un agente.

suno desarma la variable. sshafter sues capaz de localizar el socket gracias a la variable. Normalmente, otros usuarios que no sean el propietario no pueden acceder al socket, pero ahora sshse ejecuta como root y el root puede acceder a (casi) cualquier archivo independientemente de sus permisos.

sudo hacedesarmar la variable (por defecto; veresteyeso). sshin sudo ssh …no puede localizar el enchufe. Es como si el agente no estuviera allí. sshintenta encontrar la clave privada correcta en algunas ubicaciones predeterminadas en ~/.ssh, pero ahora busca en el directorio de inicio de la raíz, no en el directorio de inicio de su usuario habitual, donde está la clave privada correcta.

Respuesta2

Puede pasar la ruta a su archivo de identidad con la opción -i a ssh.

ssh user@host -i /path/to/keyfile

información relacionada