7 votos

¿Cómo puedo utilizar mi agente GPG para SSH en todas partes?

En mi sistema, estoy tratando de configurar la autenticación SSH a través de mi agente GPG (instalado a través de brew ). Hasta ahora, he conseguido que esto funcione en mi terminal gracias a la adición de las siguientes líneas a ~/.profile :

# Enable SSH support through GPG
export "GPG_TTY=$(tty)"
export "SSH_AUTH_SOCK=${HOME}/.gnupg/S.gpg-agent.ssh"

Sin embargo, las aplicaciones GUI (por ejemplo, PyCharm) siguen utilizando el agente SSH integrado en Mac (molesto). ¿Hay alguna forma/lugar que pueda usar para establecer mi SSH_AUTH_SOCK para toda mi sesión? Idealmente, no quiero desactivar SIP para lograr mi objetivo, y soluciones como este no parecen funcionar.

Por ejemplo, ejecutar import os; os.environ['SSH_AUTH_SOCK'] en la consola Python integrada de PyCharm seguirá mostrando /private/tmp/com.apple.launchd.whatever/Listeners en lugar de mi calcetín de autenticidad. Asimismo, no pedirá mi código de acceso de la clave GPG, sino que pasará por el flujo de autenticación estándar.

Esto también persiste en XCode, utilizando un pequeño programa de ejemplo para obtener el valor de SSH_AUTH_SOCK Así que no se trata de PyCharm ni de un problema exclusivo de Python.

Actualmente estoy ejecutando Mojave 10.14.4 en mi sistema.

6voto

fortran Puntos 26495

Así que me las he arreglado para encontrar una solución poco práctica que consiga el mismo objetivo. Parece (???) imposible sobrescribir SSH_AUTH_SOCK y no puedo desactivar el agente incorporado porque quiero conservar el SIP.

Sin embargo, puedo abusar del symlinking para que mi agente funcione de forma fiable. Gracias a un buen artículo explicando cómo aprovechar el YubiKey en un Mac (similar a mi objetivo), logré crear un LaunchAgent para simular mi agente a donde sea SSH_AUTH_SOCK está señalando. Hasta el momento no he realizado pruebas exhaustivas con esto, pero parece que funciona bien.

Por si acaso el enlace de la fuente se cae, he creado un archivo en ~/Library/LaunchAgents/link-ssh-auth-sock.plist con el siguiente contenido:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs>
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>link-ssh-auth-sock</string>
  <key>ProgramArguments</key>
  <array>
    <string>/bin/sh</string>
    <string>-c</string>
    <string>/bin/ln -sf $HOME/.gnupg/S.gpg-agent.ssh $SSH_AUTH_SOCK</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

Este LaunchAgent sustituye al socket generado por Apple (ubicado en /private/tmp/... ) con el mío, pero conserva la variable de entorno de Apple. El enlace simbólico funciona, y es recogido en cualquier aplicación que soporte el uso de SSH nativo (en mi caso, PyCharm).

No es una verdadera solución al problema (el socket está siendo symlinked, quién sabe qué problemas podría causar esto), pero al menos funciona por el momento.

Seguiré intentando encontrar un verdadero solución a este problema, pero mientras tanto voy a compartir esta respuesta sólo para cualquier otra alma curiosa con el mismo problema.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X