¿Cómo hago para que ssh-agent funcione en todas las terminales?


27

He configurado el inicio de sesión ssh automático (sin contraseña) en algunos servidores usando ssh-copy-id. ssh-agentfunciona solo desde la terminal donde se ejecutó. ¿Cómo llego ssh-addal trabajo en todas mis terminales?

Naturalmente, no preferiría la clave SSH sin una frase de contraseña.

Respuestas:


26

Si inicia sesión en una sesión gráfica, organice el inicio ssh-agentdurante el inicio de la sesión. Algunas distribuciones ya lo hacen por ti. Si el suyo no lo hace, organice la ejecución ssh-agentdesde el script de inicio de sesión o desde su administrador de ventanas. Cómo hacerlo depende de su entorno de escritorio y su administrador de ventanas. Por ejemplo, si inicia su administrador de ventanas manualmente, simplemente reemplace la llamada a my_favorite_wmpor ssh-agent my_favorite_wm.

No comience ssh-agentdesde .bashrco .zshrc, ya que estos archivos son ejecutados por cada nuevo shell interactivo. El lugar para comenzar ssh-agentes en un archivo de inicio de sesión como .profileo .xsession.

Si desea usar el mismo agente SSH en todos los procesos, sin importar desde dónde inició sesión, puede hacer que siempre use el mismo nombre de socket, en lugar de usar un socket con nombre aleatorio. Por ejemplo, puede poner esto en su ~/.profile:

export SSH_AUTH_SOCK=~/.ssh/ssh-agent.$HOSTNAME.sock
ssh-add -l 2>/dev/null >/dev/null
if [ $? -ge 2 ]; then
  ssh-agent -a "$SSH_AUTH_SOCK" >/dev/null
fi

Para su información, la razón por la que lo busca $? -ge 2es porque el código de salida 1 es cuando el agente ssh no tiene claves, pero el agente ssh ya se está ejecutando.
wisbucky

7

Probablemente desee un programa como Keychain , que fue diseñado para este propósito exacto. Desde la página del manual:

DESCRIPTION
   keychain is a manager for ssh-agent, typically run from ~/.bash_profile.
   It allows your shells and cron jobs to share a single ssh-agent process.

realmente me gusta este!
Colin D

¡Excelente! gracias. Funciona perfectamente.
Alguien

esto funciona muy bien, después de descargar el archivo comprimido de Github, asegúrese de agregar la ruta completa del directorio keychain-2.8.5 sin comprimir a su ~ / .bash_profile export PATH = $ PATH: line
Kevin Zhao

4

Aplíquelo a su entorno de escritorio o administrador de ventanas. Cuando hice esto manualmente en el pasado con una costumbre ~/.Xclients, simplemente usé esto como la última línea:

ssh-agent mywindowmanger

Puede haber algunos DE que tienen sus propias opciones de configuración para esto, aunque me parece que (por ejemplo) KDE no. Actualmente, parece que el mío se ejecutó a través de un código desde /etc/X11/xinit/xinitrc-common(presumiblemente algo hecho por fedora), ya que está activo para todos los usuarios independientemente de DE / WM y el comando del proceso principal $HOME/.Xclients, pero ese archivo no hace referencia ssh-agent(mientras que /etc/X11/xinit/xinitrc-commonsí).

Si no tiene un ~/.Xclients, puede crear uno con solo esa línea, pero necesitará conocer el comando que inicia su DE / WM.

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.