guardar - git config--global
Configurando Git sobre SSH para iniciar sesiĆ³n una vez (14)
He clonado mi repositorio de git en ssh. Entonces, cada vez que me comunico con el maestro de origen empujando o tirando, tengo que volver a ingresar mi contraseña. ¿Cómo puedo configurar git para que no necesite ingresar mi contraseña varias veces?
Pruebe ssh-add
, necesita ssh-agent
para ejecutar y mantener su clave privada
(De acuerdo, respondiendo a la pregunta actualizada, primero ejecuta ssh-keygen
para generar una clave pública y privada como explained Jefromi . Jefromi la clave pública en el servidor. Debe usar una frase de contraseña, si no tiene el equivalente de una contraseña de texto sin formato en su clave privada. Pero cuando lo haga, entonces necesitará como materia práctica ssh-agent
como se explica a continuación).
Desea ejecutar ssh-agent
en segundo plano al iniciar sesión. Una vez que inicie sesión, la idea es ejecutar ssh-add
una vez y solo para dar una contraseña al agente para decodificar su clave. Luego, el agente se queda en la memoria con la llave desbloqueada y cargada, lista para usar cada vez que va a algún lado.
Todos los comandos de ssh-family 1 consultarán al agente y automáticamente podrán usar su clave privada.
En OSX (err, macOS ), sistemas GNOME y KDE, ssh-agent
generalmente se inicia automáticamente. Revisaré los detalles en caso de que, como yo, también tengas un Cygwin u otro entorno de Windows donde seguramente no se haga por ti.
Comience aquí: man ssh-agent
.
Hay varias formas de ejecutar automáticamente el agente. Como explica la página del manual, puede ejecutarlo para que sea el padre de todos los demás procesos de la sesión de inicio de sesión. De esta forma, las variables de entorno que proporciona estarán automáticamente en todos sus shells. Cuando invoque (más tarde) ssh-add
o ssh
ambos tendrán acceso al agente, ya que todos tienen las variables de entorno con rutas de acceso mágico o lo que sea.
Alternativamente, puede ejecutar el agente como un elemento secundario común, guardar la configuración del entorno en un archivo y obtener ese archivo en cada capa cuando se inicia.
Mis sistemas OSX y Ubuntu realizan automáticamente la configuración de inicio del agente, por lo que todo lo que tengo que hacer es ejecutar ssh-add
una vez. Intente ejecutar ssh-add
y vea si funciona, de ser así, solo necesita hacerlo una vez por reinicio.
Mi sistema Cygwin lo necesitaba hecho manualmente, así que lo hice en mi .profile
y tengo .bashrc
source .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 mediante el script; contiene las definiciones y exportaciones de variables de entorno. Lo anterior trata de obtener el archivo .agent y luego intenta ps(1)
el agente. Si no funciona, inicia un agente y crea un nuevo archivo de agente. También puede ejecutar ssh-add
y si falla, iniciar un agente.
sudo
local y remoto con la extensión pam correcta. Agregue una sola línea AddKeysToAgent yes
en la parte superior del archivo .ssh / config. Por supuesto, ssh-agent debe estar ejecutándose de antemano. Si no se está ejecutando (verifique por prep ssh-agent
), simplemente ejecútelo eval $(ssh-agent)
Ahora, la clave se carga en todo el sistema en la memoria y no tiene que escribir la frase de contraseña nuevamente.
La fuente de la solución es https://askubuntu.com/questions/362280/enter-ssh-passphrase-once/853578#853578
Asegúrese de que cuando clonó el repositorio, lo hizo con la URL SSH y no con HTTPS; en el cuadro de URL de clonación del repositorio, elija el protocolo SSH antes de copiar la URL. Ver imagen a continuación:
Creo que hay dos cosas diferentes aquí. El primero es que la autenticación SSH normal requiere que el usuario ingrese la contraseña de la cuenta (donde la contraseña de la cuenta se autenticará contra diferentes métodos, según la configuración de sshd).
Puede evitar poner esa contraseña usando certificados. Con los certificados, aún debe ingresar 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 puedes seguir las instrucciones señaladas por steveth45:
Si quiere evitar poner la contraseña del certificado cada vez, entonces puede usar ssh-agent, como señala DigitalRoss
La forma exacta en que hace esto depende de Unix frente a Windows, pero esencialmente necesita ejecutar ssh-agent en segundo plano cuando inicia sesión, y luego, la primera vez que inicia sesión, ejecuta ssh-add para darle al agente su frase de contraseña. Todos los comandos de ssh-family consultarán al agente y recogerán automáticamente su frase de contraseña.
Comience aquí: man ssh-agent.
El único problema de ssh-agent es que, en * nix al menos, debe colocar la contraseña de los certificados en cada shell nuevo. Y luego el certificado se "carga" y puede usarlo para autenticarse contra un servidor ssh sin poner ningún tipo de contraseña. Pero esto está en ese caparazón particular.
Con keychain puedes hacer lo mismo que ssh-agent pero "todo el sistema". Una vez que enciende su computadora, abre un caparazón y coloca la contraseña del certificado. Y luego, cada otro shell usará ese certificado "cargado" y nunca volverá a solicitar su contraseña hasta que reinicie su PC.
Gnome tiene una aplicación similar, llamada Gnome Keyring, que le pide la contraseña de su certificado la primera vez que la usa y luego la almacena de forma segura para que no se le pregunte nuevamente.
Extendiendo los pensamientos de Muein para aquellos que prefieren editar archivos directamente sobre ejecutar comandos en git-bash o terminal.
Vaya al directorio .git de su proyecto (raíz del proyecto en su máquina local) y abra el archivo ''config''. Luego busque [origen remoto "] y establezca la configuración de url de la siguiente manera:
[remote "origin"]
#the address part will be different depending upon the service you''re using github, bitbucket, unfuddle etc.
url = [email protected]:<username>/<projectname>.git
Intenté todas estas sugerencias y más, solo para poder clonar desde mi instancia de AWS. Nada funcionó. Finalmente estafé por desesperación: copié el contenido de id_rsa.pub en mi equipo local y lo agregué a ~ / .ssh / known_hosts en mi instancia de AWS.
Prueba esto desde la caja desde la que estás presionando
Debería obtener una respuesta de bienvenida de github y estará bien para luego presionar.
Se trata de configurar ssh, no git. Si aún no lo hizo, debe usar ssh-keygen
(con una frase de contraseña en blanco) para crear un par de claves. Luego, copie la clave pública en el destino remoto con ssh-copy-id
. A menos que necesites varias claves (por ejemplo, una más segura con una frase de contraseña para otros fines) o tienes algunas cosas de identidad múltiple realmente raras, es así de simple:
ssh-keygen # enter a few times to accept defaults
ssh-copy-id -i ~/.ssh/id_rsa user@host
Editar: Deberías leer la respuesta de DigitalRoss, pero si usas claves con frases de contraseña, necesitarás usar ssh-add <key-file>
para agregarlas a ssh-agent
(y obviamente iniciar un ssh-agent
si su distribución todavía no tiene una funcionando para usted).
Si ha clonado usando HTTPS (recomendado), entonces: -
git config --global credential.helper cache
y entonces
git config --global credential.helper ''cache --timeout=2592000''
timeout = 2592000 (30 días en segundos) para habilitar el almacenamiento en caché durante 30 días (o las suites que usted tenga).
Ahora ejecute un comando git simple que requiere su nombre de usuario y contraseña.
Ingrese sus credenciales una vez y ahora el almacenamiento en caché está habilitado por 30 días.
Inténtalo de nuevo con cualquier comando de git y ahora no necesitas credenciales.
Para más información: - Guardando su contraseña de GitHub en Git
Nota : Necesita Git 1.7.10 o posterior para usar el asistente de credenciales. Al reiniciar el sistema, es posible que tengamos que ingresar la contraseña nuevamente.
Si usas github, tienen un tutorial muy bueno que lo explica más claramente (al menos para mí).
También trato de evitar escribir la contraseña todo el tiempo porque estoy usando ssh en Windows. Lo que hice fue modificar mi archivo .profile, para que ingrese mi contraseña en una sesión particular. Entonces 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 esto escribo mi frase de contraseña una vez en una sesión ...
Tuve que clonar un git repo desde un servidor que no permitía el inicio de sesión vie ssh key pero solo con un usuario / contraseña. No encontré la manera de configurar el complemento de Git para utilizar una combinación simple de usuario / contraseña, así que agregué el siguiente comando de shell como paso previo a la compilación en una máquina de compilación de Linux que depende de la herramienta esperar (apt-get install expect):
¡ESTA NO ES UNA BUENA MANERA DE RESOLVER ESTE PROBLEMA YA QUE SU CONTRASEÑA SE MUESTRA COMO UN TEXTO CLARO EN LA CONFIGURACIÓN Y REGISTROS DEL TRABAJO DE JENKINS! ÚSELO ÚNICAMENTE SI NO HAY FORMA DE CONFIGURAR LA AUTHENTIFICACIÓN DE RSA-KEY U OTRAS POSIBILIDADES DE 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''
Tuve un problema similar con GitHub porque estaba usando el protocolo HTTPS. Para verificar qué protocolo estás usando solo ejecuta
git config -l
y mira la línea que comienza con remote.origin.url
. Para cambiar tu protocolo
git config remote.origin.url [email protected]:your_username/your_project.git
ssh-keygen -t rsa
Cuando se le pida una frase de contraseña, déjela en blanco, es decir, solo presione enter. ¡¡Tan sencillo como eso!!