
Quiero usar el agente ssh real en lugar de gnome-keyring en xubuntu. Seguí los pasos dehttp://dtek.net/blog/how-stop-gnome-keyring-clobbering-opensshs-ssh-agent-ubuntu-1204, pero el llavero de gnome todavía se registra como ssh-agent. Todavía quiero seguir usando gnome-keyring para otras contraseñas
Respuesta1
Resulta que si la compatibilidad con gnome está activada en xfce, xfce4-session iniciará incondicionalmente gnome-keyring-daemon. Esto está codificado, por el momento no hay forma de configurarlo. Al deshabilitar el modo de compatibilidad de gnome, el conjunto de claves no se inicia al iniciar sesión y deberá proporcionar su contraseña nuevamente si lo inicia.
La solución más simple parece ser interceptar la llamada a gnome-keyring-daemon e insertar un script que insertará la --components
bandera en los argumentos para evitar que gnome keyring reemplace a ssh-add.
Ejecute lo siguiente para mover gnome-keyring-daemon:
sudo mv /usr/bin/gnome-keyring-daemon /usr/bin/gnome-keyring-daemon-wrapped
crear un nuevo demonio-llavero-gnomo con
sudo nano /usr/bin/gnome-keyring-daemon
e inserte el siguiente contenido:
#!/bin/sh
exec /usr/bin/gnome-keyring-daemon-wrapped --components=pkcs11,secrets,gpg "$@"
Haga ejecutable el nuevo gnome-keyring-daemon con sudo chmod +x /usr/bin/gnome-keyring-daemon
.
Ahora el llavero de gnome ya no intentará reemplazar ssh-add.
Tenga en cuenta que actualizar su sistema restablecerá el gnome-keyring-daemon predeterminado, por lo que probablemente necesitará ejecutar los pasos anteriores nuevamente después de la actualización.
editar:
En xubuntu 14.10, el inicio funciona ligeramente diferente en el sentido de que gkd también se inicia desde el inicio de la sesión. Es posible anular la configuración de inicio para que no inicie el componente ssh, pero aun así gkd iniciará su componente ssh cuando xfce4-session también intente iniciarlo. Entonces, si desea que xfce también inicie automáticamente los servicios de gnome, aún necesitará el truco anterior. Una alternativa es deshabilitar los servicios de gnome (Configuración -> Sesión e inicio -> avanzado -> Iniciar servicios de GNOME al inicio), configurar upstart para iniciar gkd con la --components=pkcs11,secrets,gpg
bandera y, opcionalmente, también configurar los servicios de gnome que desea iniciar manualmente.
(Aparte de los dos lugares que inician gkd mencionados anteriormente, gk-daemon también se inicia antes desde lightdm/PAM para recibir la contraseña de inicio de sesión del usuario. Pero ese inicio no configura completamente gkd y aún espera estar completamente configurado mediante un segundo intento de iniciarlo, de modo que ese intento de inicio no sea relevante para el problema actual).
Respuesta2
Es un hilo antiguo, pero mi solución para este problema en Xubuntu 14.04 es simple simplemente reapareciendo gnome-keyring-daemon
en Sesión e Inicio. Lo que debes hacer es simplemente ejecutar el siguiente comando:
$ gnome-keyring-daemon --replace --daemonize --components=pkcs11,secrets,gpg
Eliminamos "ssh" del componente del llavero de Gnome.
- Vaya a Menú > Configuración > Sesión e inicio
- Haga clic en la pestaña Inicio automático de la aplicación
- Haga clic en el botón Agregar
- Aparecerá una nueva ventana de aplicación, puede completarla como en el ejemplo a continuación
- Nombre: Eliminador de llavero SSH
- Descripción: Eliminar SSH del llavero de GNOME
- Dominio:
gnome-keyring-daemon --replace --daemonize --components=pkcs11,secrets,gpg
- Haga clic en Aceptar
Intente cerrar sesión en XFCE y volver a iniciarla. Para asegurarse de que el llavero de Gnome ya no administre ssh, simplemente ejecute.
$ ssh-add -l
Could not open a connection to your authentication agent.
Si recibió ese mensaje, significa que el llavero de Gnome no administra su SSH y puede usar la implementación original del agente ssh de OpenSSH.
Respuesta3
Para aprovechar la respuesta de @JanKanis, la rastreé hasta que xfce4-session fue el culpable de iniciar el comando gnome-keyring-daemon --start.
Cuando se ejecuta de esa manera, gnome-keyring-daemon no verifica si SSH_AUTH_SOCK ya está configurado, lo cual es una "característica", ya que entonces puede hacer que ssh-agent y gnome-keyring-daemon proporcionen un socket.
Lo primero es lo primero:
Agregar ~/.config/upstart/gnome-keyring.conf
:
description "GNOME Keyring agents"
author "Dimitri John Ledkov <[email protected]>"
start on (starting xsession-init or starting ssh-agent or starting gpg-agent) and started dbus
task
script
# Stop because I say so
stop; exit 0
eval "$(gnome-keyring-daemon --start)" >/dev/null
initctl set-env --global SSH_AUTH_SOCK=$SSH_AUTH_SOCK
initctl set-env --global GPG_AGENT_INFO=$GPG_AGENT_INFO
end script
Ahora reemplace gnome-keyring-daemon con un contenedor (moví el original a /usr/libexec/):
#!/bin/sh
gkd=/usr/libexec/gnome-keyring-daemon
debug=1
log=${XDG_CACHE_HOME:-"${HOME}/.cache"}/gkd.log
if [ ${debug} -gt 0 ]
then
echo "================" >> ${log}
echo "Invoked as $0 $@" >> ${log}
echo "================" >> ${log}
/usr/bin/pstree -lag >> ${log}
fi
case "$@" in
*--start*)
$gkd --components=pkcs11,secrets,gpg "$@"
;;
*)
$gkd "$@"
;;
esac
if [ ${debug} -gt 0 ]
then
/usr/bin/pstree -lag >> ${log}
fi
El código de depuración está ahí para que pueda descubrir por qué dejó de funcionar. Dado que ninguno de estos programas tiene métodos de configuración sensatos, simplemente no hay forma de evitar los comandos de piratería. En este caso, no puedo encontrar ningún método de configuración documentado para que xfce4-session no invoque gnome-keyring-daemon --start, que no tenga otros efectos secundarios. Todos hacen suposiciones sobre las cosas que se están instalando y, por lo tanto, leen la mente del usuario.
Respuesta4
Aquí hay una versión menos invasiva del guión que publicó JanKanis. Acepta cualquier componente que se le haya pasado, pero elimina el componente SSH.
#!/bin/bash
ARGS="$@"
COMPONENTS=""
if [[ $ARGS =~ \-\-components= ]]; then
component_match_expression='(\-\-components=([0-9a-z,]+))'
COMPONENTS=$(echo $ARGS | grep -oP "$component_match_expression")
ARGS=$(echo $ARGS | sed -E "s/$component_match_expression//")
COMPONENTS="--components=$(echo $COMPONENTS | grep -oP '(?<=\-\-components=)([0-9a-z,]+)' | sed -e 's/ssh//' -e 's/,,/,/')"
if [ "$COMPONENTS" != "--components=" ]; then
ARGS="$ARGS $COMPONENTS"
else
exit 0
fi
fi
/usr/bin/gnome-keyring-daemon-wrapped $ARGS