tipos - guardar usuario y contraseña github
¿Cómo evito la especificación del nombre de usuario y la contraseña en cada impulso de git? (18)
1. Generar una clave SSH
Linux / Mac
Abrir terminal para crear claves ssh:
cd ~ #Your home directory
ssh-keygen -t rsa #Press enter for all values
Para ventanas
(Solo funciona si el programa de confirmación es capaz de usar certificados / claves ssh privadas y públicas)
- Utiliza Putty Gen para generar una llave.
- Exportar la clave como una clave SSH abierta
Aquí hay un walkthrough sobre putty gen para los pasos anteriores
2. Asocie la clave SSH con el repositorio remoto
Este paso varía según la configuración del control remoto.
Si es un repositorio de GitHub y usted tiene privilegios administrativos, vaya a la settings y haga clic en ''agregar clave SSH''. Copie el contenido de su
~/.ssh/id_rsa.pub
en el campo etiquetado ''Clave''.Si su repositorio es administrado por otra persona, entregue al administrador su
id_rsa.pub
.Si su repositorio remoto es administrado por usted, puede usar este comando, por ejemplo:
scp ~/.ssh/id_rsa.pub YOUR_USER@YOUR_IP:~/.ssh/authorized_keys/id_rsa.pub
3. Establezca su URL remota en un formulario que admita SSH 1
Si ha realizado los pasos anteriores y aún recibe la solicitud de contraseña, asegúrese de que la URL de su repositorio esté en el formulario
git+ssh://[email protected]/username/reponame.git
Opuesto a
https://github.com/username/reponame.git
Para ver la URL de tu repositorio, ejecuta:
git remote show origin
Puedes cambiar la URL con:
git remote set-url origin git+ssh://[email protected]/username/reponame.git
[1] Esta sección incorpora la respuesta de Eric P
Yo git push
mi trabajo a un repositorio remoto de Git.
Cada push
me pedirá que ingrese un username
y password
Me gustaría evitarlo con cada pulsación, pero ¿cómo configurarlo para evitarlo?
Ahorro indefinidamente
Puedes usar el git-credential-store través de
git config credential.helper store
que git-credential-store :
El uso de este asistente almacenará sus contraseñas sin cifrar en el disco, protegidas solo por los permisos del sistema de archivos. Si este no es un compromiso de seguridad aceptable, intente git-credential-cache, o busque un ayudante que se integre con el almacenamiento seguro proporcionado por su sistema operativo.
Con un timeout
Utilice git-credential-cache que, de forma predeterminada, almacena la contraseña durante 15 minutos.
git config credential.helper cache
para establecer un tiempo de espera diferente, use --timeout
tiempo de espera (aquí 5 minutos)
git config credential.helper ''cache --timeout=300''
Ahorro seguro indefinidamente (OS X y Windows)
- Si está utilizando una Mac, Git viene con un modo "osxkeychain" , que almacena las credenciales en el llavero seguro que está conectado a su cuenta del sistema. Este método almacena las credenciales en el disco y nunca caducan, pero están cifradas con el mismo sistema que almacena los certificados HTTPS y los rellenos automáticos de Safari.
- Si está usando Windows, puede instalar un ayudante llamado "Git Credential Manager for Windows". Esto es similar al ayudante "osxkeychain" descrito anteriormente, pero utiliza el almacén de credenciales de Windows para controlar la información confidencial. Se puede encontrar en https://github.com/Microsoft/Git-Credential-Manager-for-Windows . [énfasis mío]
Autenticación permanente con repositorios Git,
Ejecute el siguiente comando para habilitar el almacenamiento en caché de credenciales.
$ git config credential.helper store
$ git push https://github.com/repo.git
Username for ''https://github.com'': <USERNAME>
Password for ''https://[email protected]'': <PASSWORD>
El uso también debe especificar caducidad de almacenamiento en caché ,
git config --global credential.helper ''cache --timeout 7200''
Después de habilitar el almacenamiento en caché de credenciales, se almacenará en caché durante 7200 segundos (2 horas) .
Nota: Asistente de credenciales que almacena la contraseña no cifrada en el disco local.
Conecta tu cliente git a tu tienda de credenciales del sistema operativo. Por ejemplo, en Windows, vincula el ayudante de credenciales a wincred:
git config --global credential.helper wincred
¿Hay alguna forma de omitir la escritura de contraseñas al usar https: // en GitHub?
Creé un repositorio vacío en github y luego ...
git push -u origin master
Debe configurar la URL ssh remota como se describe anteriormente.
Ejecutar el siguiente comando solucionó el problema para mí.
git config --global credential.helper wincred
Por favor, consulte la siguiente documentación github:
https://help.github.com/articles/caching-your-github-password-in-git/
En el sistema operativo Windows use esto en su lugar, esto funciona para mí:
https://{Username}:{Password}@github.com/{Username}/{repo}.git
p.ej
git clone https://{Username}:{Password}@github.com/{Username}/{repo}.git
git pull https://{Username}:{Password}@github.com/{Username}/{repo}.git
git remote add origin https://{Username}:{Password}@github.com/{Username}/{repo}.git
git push origin master
Estaba usando el enlace https ( https://github.com/org/repo.git
) en lugar del enlace ssh;
[email protected]:org/repo.git
¡El cambio resolvió el problema para mí!
Mi solución en Windows:
- Haga clic derecho en el directorio para empujar y seleccione "Git Bash Here".
-
ssh-keygen -t rsa
(Presione enter para todos los valores) - Compruebe el terminal para:
Your public key has been saved in /c/Users/<your_user_name_here>/.ssh/id_rsa.pub
- Copie la clave pública del archivo especificado.
- Vaya a su perfil de GitHub => Configuración => SSH y GPG claves => Nueva clave SSH => Pegue su clave SSH = = Guardar
Parece que, al menos cuando se usa TortoiseGIT en Windows, es posible crear las claves SSH y transferirlas al servidor GIT usando simplemente:
> ssh-keygen.exe
> ssh-copy-id [username]@[GIT_server]
Paso 1 -
Cree claves SSH en su sistema Linux usando el siguiente comando
ssh-keygen -t rsa -b 4096 -C "your_email"
Le pedirá la frase de contraseña y el nombre del archivo (el valor predeterminado será ~ / .ssh / id_rsa, ~ / .ssh / id_rsa.pub)
Paso 2 -
Una vez que se crean los archivos, agregue la clave pública id_rsa.pub a la sección ssh de github.
Paso 3 -
En su máquina, agregue la clave privada id_rsa a ssh-agent usando el siguiente comando
ssh-add ~/.ssh/id_rsa
Etapa 4 -
Ahora agregue la url remota [email protected]: user_name / repo_name.git a su repositorio local de git usando el comando a continuación.
git remote remove origin
git remote add origin [email protected]:user_name/repo_name.git
Eso es.
Si su PC es segura o no le importa la seguridad de la contraseña, esto puede lograrse de manera muy simple. Suponiendo que el repositorio remoto está en GitHub y el origin
es su nombre local para el repositorio remoto, use este comando
git remote set-url --push origin https://<username>:<password>@github.com/<repo>
El indicador --push
garantiza que esto cambie la URL del repositorio solo para el comando git push
. (La pregunta formulada en la publicación original es acerca git push
comando git push
solamente. Requerir un nombre de usuario + contraseña solo para operaciones push es la configuración normal de los repositorios públicos en GitHub. Tenga en cuenta que los repositorios privados en GitHub también requerirán un nombre de usuario + contraseña para tirar y operaciones de búsqueda, por lo que para un repositorio privado no querría usar el --push flag
...)
ADVERTENCIA: Esto es inherentemente inseguro porque:
su ISP, o cualquier persona que registre sus accesos de red, puede ver fácilmente la contraseña en texto sin formato en la URL;
cualquier persona que obtenga acceso a su PC puede ver su contraseña usando
git remote show origin
.
Es por eso que usar una clave SSH es la respuesta aceptada.
Incluso una clave SSH no es totalmente segura . Cualquier persona que obtenga acceso a su PC puede, por ejemplo, hacer pulsos que arruinen su repositorio o, peor aún, empujar compromisos haciendo cambios sutiles en su código. (Todas las confirmaciones empujadas son, obviamente, altamente visibles en GitHub. Pero si alguien quisiera cambiar su código a --amend
, podrían: --amend
una confirmación previa sin cambiar el mensaje de confirmación, y luego forzar la inserción). Eso sería sigiloso y difícil de notar. en la práctica.)
Pero revelar tu contraseña es peor . Si un atacante obtiene conocimiento de su nombre de usuario + contraseña, puede hacer cosas como bloquearlo de su propia cuenta, eliminar su cuenta, eliminar permanentemente el repositorio, etc.
Alternativamente, para mayor simplicidad y seguridad, puede ingresar solo su nombre de usuario en la URL, de modo que tendrá que escribir su contraseña cada vez que git push
pero no tendrá que dar su nombre de usuario cada vez. (Me gusta mucho este enfoque, tener que escribir la contraseña me da una pausa para pensar cada vez que hago git push
, por lo que no puedo hacerlo por accidente).
git remote set-url --push origin https://<username>@github.com/<repo>
Si ya tiene configuradas sus claves SSH y sigue recibiendo el aviso de contraseña, asegúrese de que la URL de su repositorio esté en el formulario
git+ssh://[email protected]/username/reponame.git
Opuesto a
https://github.com/username/reponame.git
Para ver la URL de tu repositorio, ejecuta:
git remote show origin
Puedes cambiar la URL con git remote set-url
así:
git remote set-url origin git+ssh://[email protected]/username/reponame.git
Solo quería señalar algo sobre la solución que se dijo anteriormente varias veces:
git config credential.helper store
Puedes usar cualquier comando que requiera una contraseña después de esto. No tienes que empujar. (También puede extraer, por ejemplo) Después de eso, no tendrá que volver a escribir su nombre de usuario / contraseña.
Solo usa la opción --repo
para el comando git push. Me gusta esto:
$ git push --repo https://name:[email protected]/name/repo.git
Todo esto surge porque git no proporciona una opción en los comandos de clonar / jalar / empujar / fetch para enviar las credenciales a través de una canalización. Aunque proporciona credential.helper, se almacena en el sistema de archivos o crea un demonio, etc. A menudo, las credenciales de GIT son de nivel de sistema y la responsabilidad de mantenerlos seguros es la aplicación que invoca los comandos de git. Muy inseguro de hecho.
Esto es lo que tuve que trabajar alrededor 1. La versión de Git (git --version) debe ser mayor o igual a 1.8.3.
GIT CLONE
Para la clonación, use "git clone URL" después de cambiar la URL del formato, http: // {myuser} @ {my_repo_ip_address} / {myrepo_name.git} a http: // {myuser}: {mypwd} @ {my_repo_ip_address} /{myrepo_name.git}
Luego borre el repositorio de la contraseña como se muestra en la siguiente sección.
Comprando
Ahora, esto habría ido y
- Escrito la contraseña en origen remoto git. Escribe "git remote -v" para ver el daño. Corrija esto configurando la URL de origen remoto sin contraseña. "git remote set_url origin http: // {myuser} @ {my_repo_ip_address} / {myrepo_name.git}"
- Escriba la contraseña en .git / logs en el repositorio. Reemplace todas las instancias de pwd usando un comando de Unix como buscar .git / logs -exec sed -i ''s / {my_url_with_pwd} // g'' {} /; Aquí, {my_url_with_pwd} es la URL con contraseña. Dado que la URL tiene barras diagonales hacia delante, debe ser evitada por dos barras diagonales hacia atrás. Por ejemplo, para la URL http://kris:[email protected]/proj.git -> http: // / // / kris: [email protected] // / proj.git
Si su aplicación utiliza Java para emitir estos comandos, use ProcessBuilder en lugar de Runtime. Si debe usar Runtime, use getRunTime (). Exec que toma la matriz de cadenas como argumentos con / bin / bash y -c como argumentos en lugar de uno que toma una sola cadena como argumento.
GIT FETCH / PULL / PUSH
- establezca la contraseña en la url remota de git como: "git remote set_url origin http: // {myuser}: {mypwd} @ {my_repo_ip_address} / {myrepo_name.git}"
- Ejecute el comando git fetch / push / pull. A continuación, no se le pedirá la contraseña.
- Haga la purga como en la sección anterior. No te lo pierdas.
Utilicé la respuesta que Pavel sugirió y funcionó para mí. Mi diferencia era hacerlo mientras estaba agregando el control remoto de manera similar: git remote add (alias) https://(name:password)@github.com/(the remote address).git