¿Dónde establece gnome-keyring $ SSH_AUTH_SOCK?

10

Estoy en el proceso de deshacerme gnome-keyringcomo agente de SSH.

Cosas que he hecho

  • Busqué en internet por horas.
  • Cambió cosas y reinició, a menudo.
  • Finalmente, acabo de rmeditar todas las cosas de inicio automático relacionadas con SSH.

Eso último funcionó mágicamente ya que no hay más zócalo para el agente allí:

/run/user/[uid]/keyring/ssh

Problema

El problema que queda es que a pesar de mi obtener el resultado antes mencionado maravilloso, algo que en gnome-keyringsigue insistiendo en el establecimiento SSH_AUTH_SOCKde la ahora inexistente zócalo de arriba. Es como zombies, estas cosas nunca mueren.

Pregunta

¿Qué es establecer esa variable y dónde se hace?

Trampas

  • Estoy no pregunto cómo puedo restablecer esa variable a otro valor.
  • Estoy no preguntar cómo puedo fijar ese valor en todo el sistema o en un archivo de configuración de concha.
  • Estoy no pidiendo algunos conjuros script de inicialización de vudú para congelar, activar, desactivar, desarmar o reemplazar cualquier cosa.
  • Estoy no pidiendo consejos sobre cómo desinstalar la cosa: yo todavía lo necesito para mis contraseñas y parece ser el administrador de contraseñas más integrado y pulido de Gnome.

Quiero esa cosa deshabilitada como debería ser.

JohnW
fuente
2
¿Desinstalar gnome-keyring?
rudimeier
1
@ rudimeier: todavía necesito un llavero de gnomo para mis contraseñas y, que yo sepa, no hay nada más pulido e integrado en Gnome.
JohnW
@rudimeier incluso eso no parece ayudar. Lo he intentado
André Borie

Respuestas:

8

Déjame adivinar, estás usando Wayland. Me encontré con este problema hoy y pensé que compartiría la solución.

Gnome-Session tiene una anulación codificada para SSH_AUTH_SOCKUnderland por alguna razón. Consulte el siguiente compromiso: https://github.com/GNOME/gnome-session/commit/a8896ccad65583885735a04205351f48a42f29ae

La solución? Establecer una variable de entorno para desactivar este comportamiento: GSM_SKIP_SSH_AGENT_WORKAROUND=1. Esto cortocircuita el código de configuración del entorno.

Para las personas que encuentran esto que también intentan configurar ssh-agent: en mi archivo de unidad systemd para ssh-agent, tengo la siguiente línea:

ExecStartPost=/usr/bin/bash -c "/usr/bin/systemctl --user set-environment SSH_AUTH_SOCK=$SSH_AUTH_SOCK GSM_SKIP_SSH_AGENT_WORKAROUND=1"

El archivo completo se ve así:

[Unit]
Description=SSH Agent
IgnoreOnIsolate=true

[Service]
Type=forking
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -a $SSH_AUTH_SOCK
ExecStartPost=/usr/bin/bash -c "/usr/bin/systemctl --user set-environment SSH_AUTH_SOCK=$SSH_AUTH_SOCK GSM_SKIP_SSH_AGENT_WORKAROUND=1"

[Install]
WantedBy=default.target
ceezy
fuente
¡Gracias! En Ubuntu v17.10 Artful Aardvark, simplemente agregando export GSM_SKIP_SSH_AGENT_WORKAROUND=1a mi ~ / .profile y reiniciando reparó mi configuración que anteriormente funcionaba en v17.04.
Stephen Niedzielski
Esto parece afectar más que Wayland, me he encontrado con esto cuando trato de usar gnome-flashback + i3.
dragon788
Tenga en cuenta que ese hack funciona hasta Gnome 3.24 o anterior ( wiki.archlinux.org/index.php/GNOME/… )
Pablo Olmos de Aguilera C.
5

(El entorno de OP no se conoce, por lo que las rutas que se proporcionan aquí son las que se encuentran en mi máquina Ubuntu)

¿Dónde establece gnome-keyring SSH_AUTH_SOCK?

Para responder a la pregunta principal en el título, SSH_AUTH_SOCK se configura mediante gnome-keyring /usr/share/upstart/sessions/gnome-keyring-ssh.confcon el siguiente comando:

initctl set-env --global SSH_AUTH_SOCK=$SSH_AUTH_SOCK

Citando el initctlmanual:

initctl set-env VARIABLE[=VALUE]

Agrega o actualiza una variable en una tabla de entorno de trabajo. Las variables establecidas de esta manera se aplicarán a todos los procesos que se inician posteriormente para un trabajo.

-g, --global

Opere en la tabla de entorno de trabajo global y todas las tablas de entorno de trabajo en ejecución existentes.

¿De dónde viene SSH_AUTH_SOCK en primer lugar?

El initctlcomando anterior está condicionado al hecho de que la variable de entorno SSH_AUTH_SOCK ya existe. Entonces, ¿es una situación de huevo y gallina? ¿Qué lo establece?

SSH_AUTH_SOCK se establece inicialmente por el agente ssh original que se inicia al comienzo de la sesión X. Citando el manual:

Se crea un socket de dominio UNIX y el nombre de este socket se almacena en la SSH_AUTH_SOCKvariable de entorno. El socket se hace accesible solo para el usuario actual.

PERO, lo que hace el componente ssh del gnome-keyring es sustituirlo por el agente ssh existente. Por lo tanto, sobrescribe SSH_AUTH_SOCK con su propio socket /run/user/.../keyring-.../sshpara que las aplicaciones se comuniquen con él y no con ssh-agent.

Cómo deshabilitarlo

Ahora, respondamos la última oración "Quiero esa cosa deshabilitada". Lo que quiere el OP es deshabilitar la sobrescritura de SSH_AUTH_SOCK por el componente ssh en gnome-keyring. Quieren recuperar la variable "verdadera" SSH_AUTH_SOCK establecida inicialmente por ssh-agent.

El componente ssh se inicia con el mismo script de inicio mencionado anteriormente ( /usr/share/upstart/sessions/gnome-keyring-ssh.conf) pero en una condición: la cadena X-GNOME-Autostart-enabled=falseno se debe encontrar en ninguno de estos archivos:

  • (conf en todo el sistema) /etc/xdg/autostart/gnome-keyring-ssh.desktop
  • (conf de usuario) ~/.config/autostart/gnome-keyring-ssh.desktop

Por lo tanto, si desea deshabilitarlo, todo lo que tiene que hacer es agregar una línea X-GNOME-Autostart-enabled=falsea uno de estos archivos, preferiblemente la que está en su directorio HOME.

xhienne
fuente
Intenté deshabilitar las entradas de inicio automático para el llavero Gnome y parece que la variable todavía está allí, pero apunta a un socket no existente (por lo que deshabilitar el llavero funcionó, pero la variable está configurada en otro lugar). Estoy ejecutando una máquina Archlinux, por lo que no hay un arranque y no hay nada obvio en systemd que establezca la variable ..
André Borie
@ AndréBorie No conozco ni a Arch ni a systemd. ¿Cuál es el nuevo valor de la ruta del socket? En mi macihne, ssh-agent generalmente lo establece en /tmp/ssh-XXX/agent.PID. ¿Está ssh-agent todavía en su lista de procesos?
xhienne
El camino es como en la pregunta original. No hay agentes SSH ni llaveros en ejecución.
André Borie
Esta respuesta es muy antigua, pero espero que me puedan ayudar también unix.stackexchange.com/questions/422574/…
Ojs
3

https://wiki.archlinux.org/index.php/GNOME/Keyring#Disable_keyring_daemon_components

Si desea ejecutar un agente SSH alternativo (por ejemplo, ssh-agent o gpg-agent, debe deshabilitar el componente ssh de GNOME Keyring. Para hacerlo de una manera local de cuenta:

mkdir ~/.config/autostart
cp /etc/xdg/autostart/gnome-keyring-ssh.desktop ~/.config/autostart/ &&
echo 'Hidden=true' >> ~/.config/autostart/gnome-keyring-ssh.desktop

Luego cierre sesión.

Ligeramente editado, eliminando el uso aparentemente inútil de printf

sourcejedi
fuente
Esto también funciona para mí en Ubuntu 14.04.
pts
Esto es cierto para 3.24 y más reciente.
Pablo Olmos de Aguilera C.
0

A partir de Gnome 3.18, el socket parece estar almacenado en ~/.cache/keyring-(some random string)/ssh

Supongo que lo está poniendo gnome-keyring-daemon.

Adam Baxter
fuente