Ejecutar el agente SSH al iniciar Git Bash en Windows


Estoy usando git bash. Tengo que usar

eval `ssh-agent.exe`
ssh-add /my/ssh/location/

Cada vez que empiezo un nuevo git bash.

¿Hay alguna forma de establecer el agente ssh permanentemente? O windows tiene una buena manera para administrar las claves ssh?

Soy un chico nuevo, por favor, dame tutorial detallado, gracias!

Author: Eric, 2013-08-23

6 answers

En una sesión de git bash, puede agregar un script a ~/.profile o ~/.bashrc (con ~ normalmente establecido en %USERPROFILE%), para que dicha sesión se inicie automáticamente el ssh-agent. Si el archivo no existe, simplemente créelo.

Esto es lo que GitHub describe en " Trabajando con frases de contraseña de clave SSH".

La sección "Auto-launching ssh-agent on Git for Windows" de ese artículo tiene un script robusto que comprueba si el agente se está ejecutando o no. A continuación es sólo un fragmento, consulte el artículo de GitHub para obtener la solución completa.

# This is just a snippet. See the article above.
if ! agent_is_running; then
    agent_start
    ssh-add
elif ! agent_has_keys; then
    ssh-add
fi

Otros recursos:

"Getting ssh-agent to work with git run from windows command shell " tiene un script similar, pero me referiría principalmente al artículo de GitHub anterior, que es más robusto y actualizado.

 90
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-08 13:15:15

P.d.: Estas instrucciones están en el contexto de un shell Bash abierto en el subsistema Linux de Windows 10 y no menciona sobre claves SSH de enlace sym generadas en Windows con Bash en Ubuntu en Windows

1) Actualiza tu .bashrc añadiendo lo siguiente en él

# Set up ssh-agent
SSH_ENV="$HOME/.ssh/environment"

function start_agent {
    echo "Initializing new SSH agent..."
    touch $SSH_ENV
    chmod 600 "${SSH_ENV}"
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' >> "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add
}

# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
    . "${SSH_ENV}" > /dev/null
    kill -0 $SSH_AGENT_PID 2>/dev/null || {
        start_agent
    }
else
    start_agent
fi

2) Luego ejecute $ source ~/.bashrc para recargar su configuración.

Los pasos anteriores se han tomado de https://github.com/abergs/ubuntuonwindows#2-start-an-bash-ssh-agent-on-launch

3) Cree un archivo de configuración SSH, si no está presente. Utilice el siguiente comando para crear uno nuevo: .ssh$ touch config

4) Añádase lo siguiente a ~/.ssh/config

Host github.com-<YOUR_GITHUB_USERNAME> 
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_work_gmail # path to your private key
AddKeysToAgent yes


Host csexperimental.abc.com
IdentityFile ~/.ssh/id_work_gmail # path to your private key
AddKeysToAgent yes

<More hosts and github configs can be added in similar manner mentioned above>

5) Agregue su clave al agente SSH usando command $ ssh-add ~/.ssh/id_work_gmail y luego debería poder conectarse a su cuenta de github o host remoto usando ssh. Por ejemplo, en el contexto de los ejemplos de código anteriores:

$ ssh github.com-<YOUR_GITHUB_USERNAME>

O

$ ssh <USER>@csexperimental.abc.com

Esto la adición de clave al agente SSH debe ser requerida para ser realizada solo una vez.

6) Ahora cierre la sesión de su sesión Bash en el Subsistema Windows Linux, es decir, salga de todas las consolas Bash de nuevo e inicie una nueva consola de nuevo e intente SSH a su Host Github u otro host configurado en el archivo de configuración SSH y debería funcionar sin necesidad de ningún paso adicional.

Nota:

Gracias.

 14
Author: Jiggneshh Gohel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-08 08:14:59

Encontré que la manera más fácil de lograr esto era usar Pageant como agente de SSH y plink.

Necesita tener una sesión de putty configurada para el nombre de host que se usa en su control remoto.

También necesitará plink.exe que se puede descargar desde el mismo sitio que putty.

Y necesitas que se ejecute el Concurso con tu clave cargada. Tengo un acceso directo al concurso en mi carpeta de inicio que carga mi clave SSH cuando inicio sesión.

Cuando instale git-scm, puede especificarlo para usar tortoise / plink en lugar de OpenSSH.

El efecto neto es que puedes abrir git-bash cuando quieras y empujar/tirar sin ser desafiado por frases de contraseña.

Lo mismo se aplica con las sesiones de putty y WinSCP cuando el concurso tiene su clave cargada. Hace la vida mucho más fácil (y segura).

 5
Author: Alasdair,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-04 00:57:35

Como no me gusta usar putty en Windows como solución alternativa, he creado una utilidad muy simple ssh-agent-wrapper. Te escanea .carpetas ssh y añade todas sus claves al agente. Simplemente necesita ponerlo en la carpeta de inicio de Windows para que funcione.

Supuestos:

  • ssh-agent in path
  • shh-add in path (ambos eligiendo la opción " RED " al instalar git
  • las claves privadas están en %USERPROFILE%/.ssh folder
  • nombres de claves privadas comience con id (por ejemplo, id_rsa)
 1
Author: Erez A. Korn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-28 05:14:48

Crea un nuevo .archivo bashrc en su directorio~.

Allí puede poner los comandos que desea ejecutar cada vez que inicie el bash

 0
Author: user2711262,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-23 13:50:51

Solución simple de dos cadenas de esta respuesta :

Para sh, bash, etc:

# ~/.profile
if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -s > ~/.ssh-agent.sh; fi
. ~/.ssh-agent.sh

Para csh, tcsh, etc:

# ~/.schrc
sh -c 'if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -c > ~/.ssh-agent.tcsh; fi'
eval `cat ~/.ssh-agent.tcsh`
 0
Author: oklas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-13 20:09:16