Pregunta

He clonado mi repositorio git a través de ssh.Entonces, cada vez que me comunico con el maestro de origen presionando o tirando, tengo que volver a ingresar mi contraseña.¿Cómo puedo configurar git para no tener que ingresar mi contraseña varias veces?

¿Fue útil?

Solución

Trate ssh-add, necesita ssh-agent a estar en ejecución y sujeción de la clave privada

(Ok, respondiendo a la pregunta actualizado, se ejecuta primero ssh-keygen para generar una pública y una clave privada como Jefromi < a href = "https://stackoverflow.com/a/1595858/450913"> explica . se pone la clave pública en el servidor. debe utilizar una contraseña, si no tiene el equivalente de una contraseña en texto plano en su clave privada. Pero cuando lo hace, entonces usted necesita como una cuestión práctica ssh-agent como se explica a continuación.)

¿Quieres estar en ejecución ssh-agent en el fondo como que inicie sesión. Una vez que se conecte, la idea es ejecutar ssh-add una vez y sólo una vez, con el fin de dar al agente de la frase de contraseña, para descifrar la clave. Luego, el agente sólo se sienta en la memoria con su clave desbloqueado y cargado, listo para usar cada vez que ejecute ssh en alguna parte.

Todo ssh familiar comandos 1 consultará entonces el agente y automáticamente será capaz de utilizar su clave privada.

En OSX (err, macOS ), sistemas de GNOME y KDE, ssh-agent por lo general se inicia automáticamente para usted. Voy a ir a través de los datos en caso de que, como yo, que también tiene un entorno Cygwin u otras ventanas donde esto ciertamente no está hecho para ti.

Comenzar aquí:. man ssh-agent

Hay varias formas de ejecutar automáticamente el agente. Como explica la página del manual, se puede ejecutar de forma que sea uno de los padres de otros procesos de toda la sesión de inicio de sesión. De esa manera, las variables de entorno consta serán automáticamente en todos sus conchas. Cuando usted (después) de invocación ssh-add o ssh tanto tendrán acceso al agente porque todos tienen las variables de entorno con los nombres de ruta de socket mágicas o lo que sea.

Como alternativa, puede ejecutar el agente como un niño normal, excepto la configuración del entorno en un archivo, y la fuente de ese archivo en todos los depósitos cuando se inicia.

sistemas

Mi OSX y Ubuntu hacen de forma automática la configuración de lanzamiento agente, por lo que todo lo que tengo que hacer es ejecutar ssh-add vez. Pruebe a ejecutar ssh-add y ver si funciona, si es así, a continuación, sólo tiene que hacerlo una vez al iniciar el sistema.

Mi sistema Cygwin necesario que se haga manualmente, así que hice esto en mi .profile y tengo .bashrc fuente .profile:

. .agent > /dev/null
ps -p $SSH_AGENT_PID | grep ssh-agent > /dev/null || {
        ssh-agent > .agent
        . .agent > /dev/null
}

El archivo .agent se crea automáticamente por el script; que contiene las definiciones y las exportaciones variables de entorno. Los intentos anteriores a la fuente el archivo .agent, y luego trata de ps(1) el agente. Si esto no funciona se inicia un agente y crea un nuevo archivo de agente. También se puede simplemente ejecutar ssh-add y si falla iniciar un agente.


1. E incluso sudo local y remota con la extensión pam derecha.

Otros consejos

Tuve un problema similar con GitHub porque estaba usando el protocolo HTTPS.Para verificar qué protocolo estás usando simplemente ejecuta

git config -l

y mira la línea que comienza con remote.origin.url.Para cambiar su protocolo

git config remote.origin.url git@github.com:your_username/your_project.git

Esto es acerca de la configuración de ssh, no Git. Si no lo ha hecho, debe utilizar ssh-keygen (con una contraseña en blanco) para crear un par de claves. A continuación, se copia la clave pública al destino remoto con ssh-copy-id. A menos que tenga necesidad de múltiples claves (por ejemplo, una más segura con una frase de contraseña para otros fines) o si tiene un poco de materia de varios identidad muy raro pasando, es así de simple:

ssh-keygen   # enter a few times to accept defaults
ssh-copy-id -i ~/.ssh/id_rsa user@host

Editar: Realmente debería acaba de leer la respuesta de DigitalRoss, pero: si utiliza las teclas con las frases de contraseña, usted tendrá que utilizar ssh-add <key-file> para añadirlos a ssh-agent (y, obviamente, poner en marcha una ssh-agent si su distribución no tiene ya uno corriendo para usted).

Asegúrese de que al clonar el repositorio, por lo que hizo con la dirección URL SSH y no HTTPS; en el cuadro URL clon de la cesión temporal, seleccione el protocolo SSH antes de copiar la URL. Ver imagen abajo:

introducir descripción de la imagen aquí

Si ha clonado utilizando HTTPS (recomendado) entonces: -

git config --global credential.helper cache

y

git config --global credential.helper 'cache --timeout=2592000'
  • Tiempo de espera = 2592000 (30 Días en segundos) para permitir el almacenamiento en caché durante 30 días (o lo que se adapte a usted).

  • Ahora ejecutar un simple comando git que requiere su nombre de usuario y contraseña.

  • Introduzca sus credenciales una vez y ahora está habilitado el almacenamiento en caché durante 30 días.

  • Trate de nuevo con cualquier comando git y ahora que no necesita ninguna credencial.

  • Para más información: - almacenamiento en caché de su GitHub contraseña en Git

Nota: Es necesario Git 1.7.10 o posterior para utilizar el ayudante de credenciales. En el reinicio del sistema, podríamos tener que introducir la contraseña de nuevo.

La extensión de los pensamientos de Muein para aquellos que prefieren editar archivos directamente a través de la ejecución de comandos en git-bash o terminal.

Vaya al directorio .git de su proyecto (raíz del proyecto en el equipo local) y abra el archivo 'config'. A continuación, busque [ "origen" a distancia] y ajuste la configuración de la siguiente url:

[remote "origin"]
    #the address part will be different depending upon the service you're using github, bitbucket, unfuddle etc.
    url = git@github.com:<username>/<projectname>.git

Creo que hay dos cosas diferentes aquí. La primera es que la autenticación SSH normal requiere que el usuario ponga la contraseña de la cuenta (cuando la contraseña de cuenta será autenticado contra diferentes métodos, dependiendo de la configuración sshd).

Puede evitar poner la contraseña que el uso de certificados. Con los certificados que todavía tiene que poner una contraseña, pero esta vez es la contraseña de su clave privada (que es independiente de la contraseña de la cuenta).

Para hacer esto usted puede seguir las instrucciones señaladas por steveth45:

  

de autenticación de clave pública .

Si desea evitar poner la contraseña del certificado cada vez que entonces se puede usar ssh-agente, como salir en punta por DigitalRoss

  

La forma exacta de hacerlo depende en Unix vs Windows, pero en esencia lo que necesita para ejecutar ssh-agent en el fondo cuando se conecte, y luego la primera vez que se conecte, carrera ssh-add para dar el agente de su frase de contraseña. Todos los comandos ssh-familia consultará entonces el agente y automáticamente recoger su frase de contraseña.

     

Comenzar aquí:. Man ssh-agent

El único problema de ssh-agent es que, en * nix al menos, usted tiene que poner la contraseña de certificados en cada nuevo shell. Y a continuación, el certificado se "carga" y se puede utilizar para autenticarse en un servidor ssh sin poner ningún tipo de contraseña. Pero esto es en esa cáscara en particular.

llavero puede hacer lo mismo que ssh-agent pero "en todo el sistema". Una vez que encienda el ordenador, se abre un shell y poner la contraseña del certificado. Y entonces, cada dos shell usará esa "carga" certificado y la contraseña no se le pedirá de nuevo hasta que reinicie su PC.

Gnome tiene una aplicación similar, llamado Gnome llavero que pide la contraseña de su certificado la primera vez que usarlo y luego lo almacena de forma segura para que no se le pedirá de nuevo.

Si está utilizando github, tienen un muy buen tutorial que explica con más claridad (al menos para mí).

http://help.github.com/set-up-git-redirect /

ssh-keygen -t rsa

Cuando se le preguntó por una frase de paso, es decir lo deja en blanco, simplemente introduce prensa. tan simple como eso !!

Probar en el cuadro que está empujando a

    ssh git@github.com

A continuación, debe obtener una respuesta bienvenida de GitHub y va a estar bien para empujar a continuación.

tuve que un clon de git repo desde un servidor que no permitía la entrada vie clave ssh pero sólo con un usuario / contraseña. No he encontrado ninguna manera de configurar el Git Plugin de usar una simple combinación usuario / contraseña por lo que añade el siguiente comando shell como etapa de pre-construcción en una máquina Linux construcción que depende de la herramienta de esperar (apt-get install esperar):

Este no es una buena manera de resolver este problema como contraseña se muestra como un texto claro en la configuración y registro de las JENKINS TRABAJO! Sólo se debe usar SI NO HAY manera de configurar RSA-KEY AUTENTIFICACIÓN U OTROS posibilidades CONFIGURACIÓN!

rm -rf $WORKSPACE &&
expect -c 'set timeout -1; spawn git clone USER@MYHOST:/MYPATH/MYREPO.git $WORKSPACE; expect "password:" {send "MYPASSWORD\r"}; expect eof'

Añadir una sola AddKeysToAgent yes línea en la parte superior del archivo .ssh / config. Por supuesto ssh-agente debe estar en ejecución de antemano. Si no su funcionamiento (control por prep ssh-agent), entonces simplemente ejecutarlo eval $(ssh-agent)

Ahora, la clave de todo el sistema es cargado en la memoria, y usted no tiene que escribir la contraseña de nuevo.

La fuente de la solución es https://askubuntu.com/questions/362280 / enter-ssh-frase de contraseña una vez / 853578 # 853578

He estar tratando de evitar tener que escribir la frase de paso todo el tiempo también porque estoy usando ssh en ventanas. Lo que hice fue modificar mi archivo .profile, de modo que entro en mi una frase de contraseña en una sesión particular. Así que esta es la pieza de código:

    SSH_ENV="$HOME/.ssh/environment"

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

    # test for identities
    function test_identities {
        # test whether standard identities have been added to the agent already
        ssh-add -l | grep "The agent has no identities" > /dev/null
        if [ $? -eq 0 ]; then
            ssh-add
            # $SSH_AUTH_SOCK broken so we start a new proper agent
            if [ $? -eq 2 ];then
                start_agent
            fi
        fi
    }

    # check for running ssh-agent with proper $SSH_AGENT_PID
    if [ -n "$SSH_AGENT_PID" ]; then
        ps -fU$USER | grep "$SSH_AGENT_PID" | grep ssh-agent > /dev/null
        if [ $? -eq 0 ]; then
      test_identities
        fi
    # if $SSH_AGENT_PID is not properly set, we might be able to load one from
    # $SSH_ENV
    else
        if [ -f "$SSH_ENV" ]; then
      . "$SSH_ENV" > /dev/null
        fi
        ps -fU$USER | grep "$SSH_AGENT_PID" | grep ssh-agent > /dev/null
        if [ $? -eq 0 ]; then
            test_identities
        else
            start_agent
        fi
    fi

Así que con este tipo i mi contraseña una sola vez en una sesión ..

He intentado todas estas sugerencias y más, sólo para poder git clone de mi instancia AWS. Nada funcionó. Finalmente hice trampa de la desesperación:. He copiado el contenido de id_rsa.pub en mi máquina local y adjuntas a ~ / .ssh / known_hosts en mi ejemplo AWS

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top