Yo git push
trabajo en un repositorio remoto de Git.
Todos push
me pedirán que ingrese username
y password
. Me gustaría evitarlo por cada impulso, pero ¿cómo configurarlo para evitarlo?
Yo git push
trabajo en un repositorio remoto de Git.
Todos push
me pedirán que ingrese username
y password
. Me gustaría evitarlo por cada impulso, pero ¿cómo configurarlo para evitarlo?
Respuestas:
Abrir terminal para crear claves ssh:
cd ~ #Your home directory
ssh-keygen -t rsa #Press enter for all values
(Solo funciona si el programa commit es capaz de usar certificados / claves ssh privadas y públicas)
Aquí hay un tutorial sobre masilla gen para los pasos anteriores
Este paso varía, dependiendo de cómo esté configurado su control remoto.
Si es un repositorio de GitHub y tiene privilegios administrativos, vaya a la configuración 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, dele 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
Si ha realizado los pasos anteriores y sigue recibiendo la solicitud de contraseña, asegúrese de que su URL de repositorio esté en el formulario
git+ssh://git@github.com/username/reponame.git
Opuesto a
https://github.com/username/reponame.git
Para ver su URL de repositorio, ejecute:
git remote show origin
Puede cambiar la URL con:
git remote set-url origin git+ssh://git@github.com/username/reponame.git
[1] Esta sección incorpora la respuesta de Eric P
git remote set-url origin git@github.com:/username/projectname.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://USERNAME@github.com': <PASSWORD>
El uso también debe especificar vencimiento del 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: Credencial auxiliar que almacena la contraseña sin cifrar en el disco local.
git
manual: "El uso de este asistente almacenará sus contraseñas sin cifrar en el disco, protegidas solo por los permisos del sistema de archivos".
store
asistente de credenciales que almacena la contraseña en el disco sin cifrar.
git config --unset credential.helper
Si ya tiene configuradas sus claves SSH y todavía recibe la solicitud de contraseña, asegúrese de que su URL de repositorio esté en el formulario
git+ssh://git@github.com/username/reponame.git
Opuesto a
https://github.com/username/reponame.git
Para ver su URL de repositorio, ejecute:
git remote show origin
Puede cambiar la URL de la siguiente git remote set-url
manera:
git remote set-url origin git+ssh://git@github.com/username/reponame.git
git init
localmente, luego intenté presionar después de agregar el control remoto desde un nuevo repositorio en el sitio web de GitHub.
git@github.com/username/reponame.git
Simplemente use la --repo
opción para el comando git push. Me gusta esto:
$ git push --repo https://name:password@bitbucket.org/name/repo.git
git remote set-url origin https://name:password@github.com/repo.git
name@github.com/....git
funciona si no te molesta que te pidan la contraseña cada vez.
git push --repo https://github.com/Username/repo
funciona sin la .git
extensión
Puede usar git-credential-store a través de
git config credential.helper store
que almacena su contraseña sin cifrar en el sistema de archivos :
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 no es una compensación de seguridad aceptable, intente con git-credential-cache o busque un ayudante que se integre con el almacenamiento seguro proporcionado por su sistema operativo.
Use el git-credential-cache que por defecto almacena la contraseña durante 15 minutos.
git config credential.helper cache
para establecer un tiempo de espera diferente, use --timeout
(aquí 5 minutos)
git config credential.helper 'cache --timeout=300'
- 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 encriptadas con el mismo sistema que almacena los certificados HTTPS y los rellenos automáticos de Safari. Ejecutar lo siguiente en la línea de comando habilitará esta función:
git config --global credential.helper osxkeychain
. Tendrá que almacenar las credenciales en el llavero usando la aplicación Llavero también.- Si está utilizando Windows, puede instalar un asistente llamado "Git Credential Manager para Windows". Esto es similar al ayudante "osxkeychain" descrito anteriormente, pero utiliza el Windows Credential Store para controlar la información confidencial. Se puede encontrar en https://github.com/Microsoft/Git-Credential-Manager-for-Windows . [enfatiza el mío]
credential.helper cache
NO funciona. Debería ser git config --global credential.helper wincred
.
Paso 1 -
Cree claves SSH en su sistema Linux usando el siguiente comando
ssh-keygen -t rsa -b 4096 -C "your_email"
Solicitará 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 creados los archivos, agregue la clave pública id_rsa.pub a la sección ssh de la cuenta 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
Paso 4 -
Ahora agregue la URL remota git@github.com: user_name / repo_name.git a su repositorio local de git usando el siguiente comando.
git remote remove origin
git remote add origin git@github.com:user_name/repo_name.git
Eso es.
Conecte su cliente git a la tienda de credenciales de su sistema operativo. Por ejemplo, en Windows, vincula el asistente de credenciales a wincred:
git config --global credential.helper wincred
¿Hay alguna forma de omitir la escritura de contraseñas cuando se usa https: // en GitHub?
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
Solo quería señalar algo sobre la solución que se dijo anteriormente varias veces:
git config credential.helper store
Puede 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 necesitará escribir su nombre de usuario / contraseña nuevamente.
Hasta donde yo sé, hay simplemente dos formas seguras : ssh o passwd encriptadas usando un almacén de claves .
cat ~/.ssh/id_rsa.pub
, péguelo allí, nómbrelo y guárdelo (si no tiene ese archivo, genere uno para usted ssh-keygen -t rsa
simplemente ingresando para todas las indicaciones);git remote set-url origin git+ssh://git@github.com/username/reponame.git
: puede verificarlo primerogit remote -v
);touch t; git add t; git commit -m "test"; git push
y confirma que sí para disfrutar del mundo sin contraseña .Si solo lo usa git config --global credential.helper store
como otros mencionaron, sus contraseñas no cifradas se almacenarán en un texto sin formato en el ~/.git-credentials
que no es seguro como parece.
Intenta encriptarlo como
sudo apt-get install libgnome-keyring-dev
sudo make --directory=/usr/share/doc/git/contrib/credential/gnome-keyring
git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring
git config --global credential.helper store
En este caso, lo estás usando
https://git@github.com/username/reponame.git
.
Mi solución en Windows:
ssh-keygen -t rsa
(Presione enter para todos los valores)Your public key has been saved in /c/Users/<your_user_name_here>/.ssh/id_rsa.pub
Si su PC es segura o no le importa la seguridad de la contraseña, esto se puede lograr de manera muy simple. Suponiendo que el repositorio remoto está en GitHub y 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 --push
indicador garantiza que esto cambie la URL del repositorio solo para el git push
comando. (La pregunta que se hizo en la publicación original es git push
solo sobre el comando. Requerir un nombre de usuario + contraseña solo para operaciones push es la configuración normal para público repositorios en GitHub. Tenga en cuenta que los repositorios privados en GitHub también requerirían un nombre de usuario + contraseña para las operaciones de extracción y extracción , por lo que para un repositorio privado no querrá usar el --push flag
...)
ADVERTENCIA: Esto es inherentemente inseguro porque:
su ISP, o cualquier persona que registre sus accesos a la red, puede ver fácilmente la contraseña en texto plano en la URL;
Cualquier persona que tenga 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 . Cualquiera que obtenga acceso a su PC aún puede, por ejemplo, hacer cambios que destruyen su repositorio o, lo que es peor, enviar confirmaciones haciendo cambios sutiles en su código. (Todos los commits empujados son obviamente muy visibles en GitHub. Pero si alguien quisiera cambiar su código subrepticiamente, podrían--amend
un commit previo sin cambiar el mensaje de commit, y luego forzarlo a empujarlo. Eso sería sigiloso y bastante difícil de notar en la práctica. )
Pero revelar su contraseña es peor . Si un atacante conoce su nombre de usuario + contraseña, puede hacer cosas como bloquearlo de su propia cuenta, eliminar su cuenta, eliminar permanentemente el repositorio, etc.
Alternativamente, por simplicidad y seguridad, puede proporcionar solo su nombre de usuario en la URL, de modo que tendrá que escribir su contraseña cada vez, 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 lo hago git push
, así que no puedo git push
por accidente).
git remote set-url --push origin https://<username>@github.com/<repo>
@
pasa si la contraseña tiene , está rompiendo el comando pensando contraseña después de @ como parte del servidor git?
Todo esto surge porque git no proporciona una opción en los comandos clone / pull / push / fetch para enviar las credenciales a través de una tubería. A pesar de que 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 tarea de invocar los comandos de git es responsabilidad de mantenerlos seguros. Muy inseguro de hecho.
Esto es lo que tuve que solucionar. 1. La versión de Git (git --version) debe ser mayor o igual que 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 purgue el repositorio de la contraseña como en la siguiente sección.
PURGANDO
Ahora, esto se habría ido y
Si su aplicación está utilizando 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 la que toma una sola cadena como argumento.
GIT FETCH / PULL / PUSH