git - generate - ssh add key mac
Clave SSH-Todavía pidiendo contraseña y frase de contraseña (21)
He estado ''arrepintiéndome'' de que Github siempre me pide mi nombre de usuario y contraseña cuando cloné un repositorio. Quiero omitir este paso porque es una molestia dentro de mi flujo de trabajo.
Intenté configurar una clave SSH (lo que hice con éxito) usando esta guía. https://help.github.com/articles/generating-ssh-keys y tuve éxito.
Mi problema es que todavía me piden mi contraseña de github y mi frase de contraseña al clonar un repositorio (usando SSH). Mi entendimiento fue que después de configurar esta clave SSH, ya no tendría que hacer eso.
Estoy un poco inseguro de qué preguntar, por lo que simplemente estableceré mi objetivo.
Quiero poder clonar repositorios sin tener que ingresar mi información de Github todo el tiempo .
¿Qué me estoy perdiendo con mi clave SSH? Si alguien puede proporcionar orientación o recursos, lo apreciaría, porque siempre me he sentido un poco perdido cuando se trata de la autenticación SSH en GitHub.
Por lo que sé, este es un comando que prueba si las cosas funcionan correctamente, aquí está la salida de mi consola:
~ $ ssh -T [email protected]
Saving password to keychain failed
Enter passphrase for key ''/Users/MYNAME/.ssh/id_rsa'':
Hi MYNAME! You''ve successfully authenticated, but GitHub does not provide shell access.
Cuando ingrese mi contraseña, ¿debería fallar primero? Luego, cuando entro en mi frase de contraseña, pasa.
Añadir identidad sin llavero
Es posible que haya ocasiones en las que no desee que la frase de contraseña se guarde en el llavero, pero no desea tener que ingresar la frase de contraseña una y otra vez.
Puedes hacerlo así:
ssh-add ~/.ssh/id_rsa
Esto le pedirá la contraseña, ingrésela y no volverá a preguntar hasta que reinicie.
Añadir identidad con llavero
Como @dennis señala en los comentarios, para conservar la frase de contraseña a través de reinicios almacenándolo en su llavero, puede usar la opción -K
( -k
para Ubuntu) cuando agregue la identidad de esta manera:
ssh-add -K ~/.ssh/id_rsa
Una vez más, esto le pedirá la contraseña, ingrésela y esta vez nunca más le pedirá esta identidad.
¡Probé todas las respuestas aquí y ninguna de estas respuestas funcionó ! Mi contraseña no persistiría entre las sesiones / reinicios de mi Mac.
Lo que descubrí al leer github.com/lionheart/openradar-mirror/issues/15361 y esta discusión de Twitter fue que Apple cambió deliberadamente el comportamiento de ssh-agent en macOS 10.12 Sierra para que ya no cargue automáticamente las claves SSH anteriores. Para mantener el mismo comportamiento que El Cap hice lo siguiente:
-
ssh-add -K ~/.ssh/id_rsa
Nota: cambie la ruta donde se encuentra su clave id_rsa. -
ssh-add -A
Cree (o edite si existe) el siguiente archivo
~/.ssh/config
:Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa
¡Y ahora mi contraseña es recordada entre reinicios de mi Mac!
Asegúrese de que está utilizando ssh para su repositorio también
mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v origin [email protected]:eMahtab/jenkins-cje-2017.git (fetch) origin [email protected]:eMahtab/jenkins-cje-2017.git (push)
No use https, si su control remoto está usando https, seguirá pidiendo la contraseña, incluso si ha agregado la clave pública a Github y la clave privada a ssh-agent. A continuación siempre le pediremos la contraseña.
mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v origin https://github.com/eMahtab/jenkins-cje-2017.git (fetch) origin https://github.com/eMahtab/jenkins-cje-2017.git (push)
El mismo problema para mí y la solución fue:
Consulte este documento github para convertir la URL del remoto de https a ssh. Para verificar si la URL del remoto es ssh o https, use git remote -v. Para cambiar de https a ssh: git set-url origin [email protected]: USERNAME / REPOSITORY.git @jeeYem
El problema parece ser porque estás clonando desde HTTPS y no desde SSH. Intenté todas las otras soluciones aquí, pero todavía estaba experimentando problemas. Esto lo hizo por mí.
Usando el osxkeychain helper
así:
Averigua si lo tienes instalado.
git credential-osxkeychain
Si no está instalado, se le solicitará que lo descargue como parte de las Herramientas de línea de comandos de Xcode.
Si está instalado, dígale a Git que use el
osxkeychain helper
usando la configuración global decredential.helper
:git config --global credential.helper osxkeychain
La próxima vez que clone una URL HTTPS, se le solicitará el nombre de usuario / contraseña y le otorgará acceso al llavero OSX. Después de hacer esto la primera vez, debe guardarse en su llavero y no tendrá que escribirlo nuevamente.
En Mac OSX puede agregar su clave privada al llavero usando el comando:
ssh-add -K /path/to/private_key
Si su clave privada está almacenada en ~ / .ssh y se llama id_rsa:
ssh-add -K ~/.ssh/id_rsa
Luego se le pedirá su contraseña, que se almacenará en su llavero.
Editar - Manejar reinicio
Para no tener que ingresar su contraseña, incluso después de un reinicio, agregue lo siguiente a su archivo de configuración ssh (comúnmente ubicado en ~ / .ssh / config)
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
En general, estos son los pasos para permitirle realizar una conexión remota a su servidor usando ssh sin contraseña:
Crear un par de claves privadas y públicas rsa
$ ssh-keygen -t rsa -b 4096 -C "your comments"
Copie su clave pública e inicie sesión en su servidor remoto
Agregue su clave pública a .ssh / authorized_keys
Si tiene varias claves ssh en su computadora, es posible que agregue su clave usando ssh-add
$ ssh-add /path/to/private/key
Entonces intente ssh a su servidor
$ ssh username@your_ip_address
Fuente: http://diary-of-programmer.blogspot.com/2018/08/tips-how-to-ssh-to-your-digitalocean.html
Esta respuesta funcionó para mí en Ubuntu
.
Consulte este documento de GitHub para convertir la URL del remoto de https a ssh. https://help.github.com/articles/changing-a-remote-s-url/
Para verificar si la URL del remoto es ssh o https, use git remote -v
.
Para cambiar de https a ssh:
git remote set-url origin [email protected]:USERNAME/REPOSITORY.git
Me gustaría agregar una respuesta para aquellos que aún necesiten ingresar la contraseña porque han establecido IdentitiesOnly como sí. Esto puede ser causado por varias claves y el archivo de identidad, siendo claves para git o servidor.
Después de haber generado la clave y la he copiado en el servidor:
ssh-keygen
ssh-copy-id -i ~/.ssh/12gpu_server.pub [email protected]
Encontré que no funcionó.
Luego fui a revisar el archivo ~/.ssh/config
, lo vi en la parte inferior:
Host *
IdentitiesOnly yes
Luego agrego esto arriba:
Host 12gpu
HostName 192.168.20.160
User lerner
IdentityFile ~/.ssh/12gpu_server
Puedo iniciar sesión ingresando ssh 12gpu
.
Luego puede agregar varias teclas ssh usando sus nombres favoritos, y solo necesita agregar las configuraciones como las cuatro líneas anteriores al archivo de configuración.
Host es el nombre que le gustaría ingresar cuando se conecte al servidor más tarde; el HostName es la ip o dominio del servidor como github.com; Usuario es el nombre de usuario que inicia sesión en el servidor como el nombre de usuario o git para github o gitlab; y el archivo de identidad es el archivo donde almacena la clave que ha generado.
Mobaxterme tenía una interfaz de usuario para ello.
setting > configuration > SSH > SSH Agent > [check] Use internal SSH agent "moboAgent" > add [your id_rsa and restart mobaxterme to set changes]
Para Mac OSX Sierra, encontré que las correcciones sugeridas en el problema de github para Open Radar solucionaron mi problema. Parece que Sierra cambió el comportamiento predeterminado (comencé a tener este problema después de actualizar).
Este me pareció especialmente útil: https://github.com/lionheart/openradar-mirror/issues/15361#issuecomment-249059061
ssh-add -A
Esto provocó que mi identidad se agregara al agente, después de que ejecuté
ssh-add -K {/path/to/key}
Para resumir, en OSX.12:
ssh-add -K {/path/to/key}
ssh-add -A
debe resultar en:
Identity added: {/path/to/file} ({/path/to/file})
EDITAR: Noté que la próxima vez que hice un reinicio completo (también conocido como el agente se detuvo y reinició) esto ya no funcionó. La solución más completa es lo que @ChrisJF mencionó anteriormente: crear un archivo ~/.ssh/config
. Aquí está la salida de la mía:
$ cat ~/.ssh/config
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
Puede agregar tantas entradas de IdentityFile
como necesite, pero esta es la configuración predeterminada. Esta es la respuesta "de tendencia" en el enlace de openradar anterior, ATM, también.
Pruebe ssh-agent
como se explica allí: https://help.github.com/articles/working-with-ssh-key-passphrases
Puede eliminar la frase de contraseña para la clave
$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
o puedes correr
$ ssh-keygen -p
obtienes un aviso para el archivo de claves. Por defecto, ~/.ssh/id_rsa
así que presione enter
Se le pedirá que ingrese la contraseña actual.
Luego aparecerá un mensaje para la nueva frase de contraseña, presione Entrar
Si está utilizando Windows y GIT sin herramientas de terceros y su clave no está protegida por una contraseña / frase de contraseña, use esto:
- La variable de entorno HOME debe establecerse en su perfil de usuario (por ejemplo, C: / Users / Laptop)
- Vaya a la carpeta C: / Users / Laptop / .ssh / y edite el archivo "config" (¡o cree el archivo!) Ejemplo: C: / Users / Laptop.ssh / config (nota: ¡no hay ningún final al final!)
Agregue su host git-server al archivo "config" así:
#Example host entry Host myhostname.com HostName myhostname.com User git IdentityFile c:/users/laptop/.ssh/id_rsa.pub PasswordAuthentication no Port 422
Guarde el archivo y clone el repositorio así:
git clone ssh: //myhostname.com/git-server/repos/picalc.git
Puede usar parámetros de configuración adicionales para la entrada del host del archivo "config". Estos se pueden encontrar en su carpeta de instalación de git local, por ejemplo, " C: / Archivos de programa / Git / etc / ssh / ssh_config ". Extracto:
# Host *
# ForwardAgent no
# ForwardX11 no
# RhostsRSAAuthentication no
# RSAAuthentication yes
# PasswordAuthentication yes
# HostbasedAuthentication no
# GSSAPIAuthentication no
# GSSAPIDelegateCredentials no
# BatchMode no
# CheckHostIP yes
# AddressFamily any
# ConnectTimeout 0
# StrictHostKeyChecking ask
# IdentityFile ~/.ssh/identity
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
# IdentityFile ~/.ssh/id_ecdsa
# IdentityFile ~/.ssh/id_ed25519
# Port 22
# Protocol 2
# Cipher 3des
# Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
# MACs hmac-md5,hmac-sha1,[email protected],hmac-ripemd160
# EscapeChar ~
# Tunnel no
# TunnelDevice any:any
# PermitLocalCommand no
# VisualHostKey no
# ProxyCommand ssh -q -W %h:%p gateway.example.com
# RekeyLimit 1G 1h
Si está utilizando ssh url para git, cuando se le solicite la contraseña para ssh, ingrese el nombre de usuario como " git " y la contraseña como la contraseña de inicio de sesión de su sistema
Si estás usando Windows, esto funcionó para mí:
eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa
Se le pedirá una frase de contraseña en el segundo comando, y eso es todo.
Si trabaja con HTTPs
URL de HTTPs
, siempre le pedirá su nombre de usuario / contraseña.
Si está utilizando correctamente SSH
al clonar / configurar remotos. Luego asegúrese de tener un ssh-agent para recordar su contraseña. De esa manera, solo ingresará su frase de contraseña una vez por sesión de terminal.
Si aún es demasiado molesto, simplemente configure una clave ssh sin frase de contraseña.
Simplemente ejecuta el siguiente comando:
ssh-add -K
Nunca le pedirá que ingrese la contraseña nuevamente.
Tuve que ejecutar:
eval `ssh-agent -s`
ssh-add
Nota : Tendrá que hacer esto nuevamente después de cada reinicio.
Solución encontrada here .
Utilice la URL remota ssh
proporcionada por Github no https
.
Ya había establecido una frase de contraseña, pero por alguna razón ya no la reconocería. Así que acabo de agregar el archivo de identidad a mi llavero nuevamente usando ssh-add -K
y dejó de pedir mi contraseña.