¿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.


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

¡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.


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


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.