Cloné un repositorio de Git desde mi cuenta de GitHub a mi PC.
Quiero trabajar tanto con mi PC como con mi computadora portátil, pero con una cuenta de GitHub.
Cuando trato de presionar o extraer de GitHub usando mi PC, se requiere un nombre de usuario y contraseña, ¡pero no cuando estoy usando la computadora portátil!
No quiero escribir mi nombre de usuario y contraseña cada vez que interactúo origin
. ¿Que me estoy perdiendo aqui?
Respuestas:
Una causa común es la clonación utilizando el valor predeterminado (HTTPS) en lugar de SSH. Puede corregir esto yendo a su repositorio, haciendo clic en "Clonar o descargar", luego haciendo clic en el botón "Usar SSH" sobre el campo URL y actualizando la URL de su control remoto de origen de esta manera:
Esto está documentado en GitHub: Cambio de URL remotas de HTTPS a SSH .
fuente
git remote set-url origin git://new.url.here
)git remote set-url origin https://name:[email protected]/repo.git
(extraído de un comentario aquí)Permission denied (publickey)
uso de esta guía: help.github.com/articles/generating-ssh-keys .Autenticación permanente con repositorios Git
Ejecute el siguiente comando para habilitar el almacenamiento en caché de credenciales :
También debe especificar el vencimiento del almacenamiento en caché ,
Después de habilitar el almacenamiento en caché de credenciales, se almacenará en caché durante 7200 segundos (2 horas) .
fuente
git remote set-url origin https://[email protected]/<owner>/<repo>.git
Esto también funciona con 2FAfatal: protocol 'https' is not supported
Acabo de encontrar el mismo problema, y la solución más simple que encontré fue usar SSH URL en lugar de HTTPS:
Y no esto:
Ahora puede validar con solo la clave SSH en lugar de la
username
ypassword
.fuente
Además de cambiar a SSH, también puede seguir usando HTTPS, si no le importa poner su contraseña en texto claro. Ponga esto en su
~/.netrc
y no le pedirá su nombre de usuario / contraseña (al menos en Linux y Mac):Adición (ver el segundo comentario de VonC): en Windows el nombre del archivo es
%HOME%\_netrc
.Lea también el primer comentario de VonC en caso de que desee cifrar.
Otra adición (vea el comentario del usuario 137717) que puede usar si tiene Git 1.7.10 o más reciente .
Guarde en caché su contraseña de GitHub en Git utilizando un asistente de credenciales :
Esto también funciona en Linux, Mac y Windows.
fuente
%HOME%\_netrc
(en lugar de~/.netrc
). Consulte también stackoverflow.com/a/18362082/6309 para cifrar ese archivo.Para los no iniciados que están confundidos por las respuestas anteriores, puede hacer:
Que responderá con algo como
Luego puede ejecutar el comando que muchos otros han sugerido, pero ahora conoce su nombre y su repositorio desde arriba, por lo que puede cortar y pegar
yourname/yourrepo.git
desde arriba en:fuente
paraphrase
cada vez. No configuré unoyourrepo
?git remote -v
y mira lo que saleSi está utilizando SSH y su clave privada está encriptada con una frase de contraseña, aún se le pedirá que ingrese la frase de contraseña / contraseña para la clave privada cuando realice operaciones de red con Git como
push
,pull
, yfetch
.Use ssh-agent para guardar las credenciales de contraseña / contraseña de clave privada
Si desea evitar tener que ingresar su frase de contraseña cada vez, puede usarla
ssh-agent
para almacenar sus credenciales de frase de contraseña de clave privada una vez por sesión de terminal, como explico en mi respuesta a No se pudo abrir una conexión con su agente de autenticación :En un msysgit Bash de Windows, debe evaluar la salida de
ssh-agent
, pero no estoy seguro de si necesita hacer lo mismo en otros entornos de desarrollo y sistemas operativos.ssh-add
busca una clave privada en su.ssh
carpeta de inicio llamadaid_rsa
, que es el nombre predeterminado, pero puede pasar una ruta de archivo a una clave con un nombre diferente.Matar al agente
Cuando haya terminado con su sesión de terminal, puede cerrar
ssh-agent
con la bandera de matar-k
:Como se explica en el
ssh-agent
manual :Tiempo de espera opcional
Además, puede tomar un parámetro de tiempo de espera opcional como este:
donde
<timeout>
es del formato<n>h
por<n>
horas,<n>m
por<n>
minutos, etc.De acuerdo con el
ssh-agent
manual :Vea esta página para más formatos de hora .
Advertencia de seguridad para usuarios de Cygwin
Los usuarios de Cygwin deben ser conscientes de un posible riesgo de seguridad al usar ssh-agent en Cygwin :
Y en el enlace citado :
fuente
Fuente: Configurar Git
El siguiente comando guardará su contraseña en la memoria durante algún tiempo (para Git 1.7.10 o posterior).
fuente
Cuando use https para Git pull & push, solo configure
remote.origin.url
para su proyecto, para evitar ingresar el nombre de usuario (o contraseña) cada vez que presione.Cómo configurar
remote.origin.url
:@Update - usando
ssh
Creo que usar el
ssh
protocolo es una mejor solución quehttps
, aunque el paso de configuración es un poco más complejo.Pasos bruscos:
ssh-keygen
en Linux, en Windowsmsysgit
proporciona comandos similares.~/.ssh
. Y agréguelo al agente ssh mediante elssh-add
comando.remote.origin.url
del repositorio de Git assh
estilo, por ejemplo,[email protected]:myaccount/myrepo.git
Consejos:
@Update - Cambiar entre
https
yssh
protocolo.Simplemente cambiar
remote.origin.url
será suficiente, o puede editarrepo_home/.git/config
directamente para cambiar el valor (por ejemplo, usarvi
en Linux).Por lo general, agrego una línea para cada protocolo y comento uno de ellos usando
#
.P.ej
fuente
git-fetch(1)
menciona eso solo para las URL basadas engit
/ssh
.https://username:[email protected]/
es seguro. Ver stackoverflow.com/questions/4980912/…Puede guardar en caché su contraseña de GitHub en Git:
Simplemente siga las instrucciones de la documentación oficial de GitHub .
Después de seguir las instrucciones del enlace anterior, debería poder empujar / extraer hacia / desde su repositorio sin tener que escribir su nombre de usuario / contraseña cada vez.
fuente
Aquí hay otra opción:
En lugar de escribir
Podrías escribir:
Obviamente, con la mayoría de los shells, esto provocará que la contraseña quede en caché en el historial, así que tenlo en cuenta.
fuente
Lo que funcionó para mí fue editar
.git/config
y usarNo hace falta decir que esta es una forma insegura de almacenar su contraseña, pero hay entornos / casos en los que esto puede no ser un problema.
fuente
Si la clave o el
.netrc
archivo SSH no funcionó para usted, entonces otra solución simple, pero menos segura, que podría funcionar para usted es git-credential-store - Ayudante para almacenar credenciales en el disco:Por defecto, las credenciales se guardarán en el archivo
~/.git-credentials
. Será creado y escrito en.Tenga en cuenta que el uso de este asistente almacenará sus contraseñas sin cifrar en el disco, protegidas solo por los permisos del sistema de archivos. Si esto puede no ser una compensación de seguridad aceptable.
fuente
Tuve el mismo problema.
Entonces cambié el
.git/config
archivo de mi proyecto,a
y agregó la clave pública SSH al perfil de Git que está en configuración.
Para la clave pública SSH:
fuente
cat ~/.ssh/id_rsa.pub
obtener la clave rsa y pegar en la configuración del portal web git.Actualización para HTTPS:
GitHub ha lanzado un nuevo programa para Windows que almacena sus credenciales cuando usa HTTPS:
Usar:
Descargue el programa desde aquí
Una vez que ejecute el programa, editará su
.gitconfig
archivo. Vuelva a verificar si editó el correcto.gitconfig
en caso de que tenga varios de ellos. Si no editó la correcta, agregue lo siguiente a su.gitconfig
NOTA el salto de línea después
[credential]
. Es requerido.Abra su cliente de línea de comando e intente
git push origin master
una vez. Si le pide una contraseña, ingrésela y listo. Contraseña guardada!fuente
Para los usuarios de Windows Git, después de ejecutar
git config --global credential.helper store
, si aún solicita una contraseña, será mejor que compruebes dónde está escrito el archivo de configuración, usando este comandoEn mi caso, después de editar manualmente el archivo de configuración 'C: \ Archivos de programa \ Git \ mingw64 \ etc \ gitconfig' y agregar el siguiente texto, funcionó.
fuente
Básicamente tienes dos opciones.
Si usa el mismo usuario en ambas máquinas, debe copiar la clave .pub a su PC, por lo que GitHub sabe que usted es el mismo usuario.
Si ha creado un nuevo archivo .pub para su PC y desea tratar las máquinas como diferentes usuarios, debe registrar el nuevo archivo .pub en el sitio web de GitHub.
Si esto todavía no funciona, puede ser porque ssh no está configurado correctamente y ese ssh no puede encontrar la ubicación de sus claves. Tratar
Para obtener más información por qué falla SSH.
fuente
Actualización de su archivo de configuración de Git directamente ( si no desea memorizar comandos sofisticados ):
Abra su
.git/config
archivo en su editor de texto favorito. Estará en la carpeta que clonó o en el repositorio en el que realizógit init
. Vaya a ese repositorio..git
es una carpeta oculta, y presionar Ctrl+ Hdebería mostrar la carpeta oculta (ls -a
en la terminal).A continuación se muestra una muestra del
.git/config
archivo. Copie y pegue estas líneas y asegúrese de actualizar esas líneas con su información de Git.Cambie la parte de URL con el siguiente formato para SSH:
( Los formatos anteriores no cambian con varios servidores remotos de Git como GitHub o Bitbucket. Es lo mismo si está utilizando Git para el control de versiones ):
Nota: la forma SSH de conectarse a un repositorio Git remoto requerirá que agregue su clave SSH pública a su servidor remoto Git ( como GitHub o Bitbucket. Busque claves SSH en la página de configuración ).
Para saber cómo generar sus claves SSH, consulte: Creación de claves SSH
fuente
Esto es lo que funcionó para mí:
Ejemplo:
fuente
Debes realizar dos pasos:
git remote remove origin
git remote add origin [email protected]:NuggetAI/nugget.git
Observe que la URL de Git es una URL SSH y no una URL HTTPS ... que puede seleccionar desde aquí:
fuente
Si ha clonado HTTPS en lugar de SSH y se enfrenta a un problema con el nombre de usuario y la contraseña en la extracción, presione y busque Puede resolver este problema simplemente para UBUNTU
Paso 1: muévase al directorio raíz
crear un archivo .git-credentials
Agregue este contenido a ese archivo con usted
usename
password
ygithosting URL
Luego ejecuta el comando
Ahora podrá extraer y obtener todos los detalles de su repositorio sin problemas.
fuente
Si está utilizando Git (por ejemplo, Git Bash) en Windows (y si no desea cambiar de HTTPS a SSH), también puede usar Git Credential Manager para Windows
Esta aplicación mantendrá el nombre de usuario y la contraseña para usted ...
fuente
Como muchos usuarios han dicho, solo tienes que cambiar la URL de tu repositorio Git de HTTPS a SSH.
Si no ha generado una clave SSH en su máquina, entonces tendrá que hacerlo.
Solo como información adicional, después de hacer este cambio, todavía recibía el mismo error:
En mi caso, el problema era que estaba usando Windows Shell para ejecutar el comando ngh; Dado que este comando debería abrir un mensaje para solicitar la frase SSH y el Shell de Windows no abre este tipo de mensajes, la autenticación simplemente falló.
Entonces, solo tenía que abrir el shell Git y ejecutar el comando ngh allí, poner la frase SSH en el aviso cada vez que lo pedía y "voilà" ... ¡Funcionó bien!
fuente
fuente
Si tienes 2FA habilitado en su cuenta de Github, su contraseña normal no funcionará para este propósito, pero puede generar un token de acceso personal y usarlo en su lugar.
Visite la página
Settings
->Developer Settings
->Personal Access Tokens
en GitHub ( https://github.com/settings/tokens/new ) y genere un nuevo token con todos los permisos Repo :La página mostrará el nuevo valor del token. Guarde este valor y úselo en lugar de su contraseña cuando ingrese a su repositorio en GitHub:
fuente