Sé cómo proporcionar un nombre de usuario y contraseña a una solicitud HTTPS como esta:
git clone https://username:password@remote
Pero me gustaría saber cómo proporcionar un nombre de usuario y contraseña para el control remoto como este:
git clone [email protected]
He intentado así:
git clone username:password@[email protected]
git clone git@username:[email protected]
git clone [email protected]@username:password
Pero no han funcionado.
Respuestas:
Basado en el comentario de Michael Scharf:
Puede omitir la contraseña para que no se registre en su archivo de historial de Bash:
Le pedirá su contraseña.
Alternativamente, puede usar:
De esta manera funcionó para mí desde un repositorio de GitHub.
fuente
git clone https://[email protected]/username/repository.git
. git te preguntará y no se guardará en .git / config ni en tu historial de bashEl
user@host:path/to/repo
formato le dice a Git que use ssh para iniciar sesiónhost
con nombre de usuariouser
. Degit help clone
:La parte anterior al
@
es el nombre de usuario, y el método de autenticación (contraseña, clave pública, etc.) se determina mediante ssh, no Git. Git no tiene forma de pasar una contraseña a ssh, porque es posible que ssh ni siquiera use una contraseña dependiendo de la configuración del servidor remoto.Úselo
ssh-agent
para evitar escribir contraseñas todo el tiempoSi no desea escribir su contraseña ssh todo el tiempo, la solución típica es generar un par de claves pública / privada , colocar la clave pública en su
~/.ssh/authorized_keys
archivo en el servidor remoto y cargar su clave privadassh-agent
. También vea Configuración de Git a través de SSH para iniciar sesión una vez , la página de ayuda de GitHub en frases de paso clave ssh , la documentación de ssh gitolite , y la documentación de las claves ssh Heroku .Elegir entre varias cuentas en GitHub (o Heroku o ...)
Si tiene varias cuentas en un lugar como GitHub o Heroku, tendrá varias claves ssh (al menos una por cuenta). Para elegir en qué cuenta desea iniciar sesión, debe decirle a ssh qué clave privada usar .
Por ejemplo, suponga que tiene dos cuentas de GitHub:
foo
ybar
. Su clave ssh parafoo
es~/.ssh/foo_github_id
y su clave ssh parabar
es~/.ssh/bar_github_id
. Desea acceder[email protected]:foo/foo.git
con sufoo
cuenta y[email protected]:bar/bar.git
con subar
cuenta. Agregaría lo siguiente a su~/.ssh/config
:Luego clonarías los dos repositorios de la siguiente manera:
Evitar ssh por completo
Algunos servicios proporcionan acceso HTTP como alternativa a ssh:
GitHub:
Gitorious:
Heroku: Vea este artículo de soporte .
ADVERTENCIA : Agregar su contraseña a la URL de clonación hará que Git almacene su contraseña de texto sin formato
.git/config
. Para almacenar de forma segura su contraseña cuando usa HTTP, use un asistente de credenciales. Por ejemplo:Lo anterior hará que Git solicite su contraseña una vez cada 15 minutos (de forma predeterminada). Ver
git help credentials
para más detalles.fuente
En los comentarios de la respuesta de @ Bassetassen , @plosco mencionó que, como mínimo, puede usar
git clone https://<token>@github.com/username/repository.git
para clonar desde GitHub. Pensé en ampliarme sobre cómo hacerlo, en caso de que alguien encuentre esta respuesta como lo hice mientras intentaba automatizar alguna clonación.GitHub tiene una guía muy útil sobre cómo hacer esto, pero no cubre qué hacer si desea incluirlo todo en una línea para fines de automatización. Advierte que agregar el token a la URL del clon lo almacenará en texto sin formato en
.git/config
. Obviamente, este es un riesgo de seguridad para casi todos los casos de uso, pero dado que planeo eliminar el repositorio y revocar el token cuando termine, no me importa.1. Crear una ficha
GitHub tiene una guía completa aquí sobre cómo obtener un token, pero aquí está el TL; DR.
2. Clonar el repositorio
Igual que el comando @plosco dio,
git clone https://<token>@github.com/<username>/<repository>.git
, basta con sustituir<token>
,<username>
y<repository>
con lo que su información es.Si desea clonarlo en una carpeta específica, simplemente inserte la dirección de la carpeta al final de esta manera: ¡
git clone https://<token>@github.com/<username>/<repository.git> <folder>
dónde<folder>
está, lo adivinó, la carpeta para clonarlo! Se puede utilizar, por supuesto.
,..
,~
, etc. aquí como se hace en otros lugares.3. No dejar rastro
No todo esto puede ser necesario, dependiendo de cuán sensible sea lo que esté haciendo.
rm -rf <folder>
.git remote remove origin
o simplemente eliminar el token ejecutandogit remote set-url origin https://github.com/<username>/<repository.git>
.Tenga en cuenta que no soy profesional, por lo que lo anterior puede no ser seguro en el sentido de que no quedaría rastro para ningún tipo de trabajo forense.
fuente
https://<token>@github.com
no fue aceptado con mi portal, tuve que usarlohttps://oauth2:<token>@github.com
Aunque hay muchas respuestas, me enfrento al problema repetido cuando el nombre de usuario o la contraseña tienen caracteres especiales.
La URL codifica su nombre de usuario y contraseña para git, luego úsela como parte de la propia URL (cuando no haya problemas de seguridad).
Digamos, valor codificado URL del nombre de usuario
y el valor codificado de URL de la contraseña
Entonces su URL de clonación GIT se vería así,
Espero que esto ayude.
Por si acaso, desea codificar URL en línea: https://www.urlencoder.org/
fuente
Resolví este problema de la siguiente manera:
fuente
En Windows , los siguientes pasos deberían volver a activar la ventana de inicio de sesión de GitHub cuando se
git clone
ing:fuente
Siga estos argumentos para reemplazar con sus casos especiales si están creando un problema:
! # $ & '() * +, /:; =? @ []
% 21% 23% 24% 26% 27% 28% 29% 2A% 2B% 2C% 2F% 3A% 3B% 3D% 3F% 40% 5B% 5D
Así por ejemplo-
URL real: https: // usern @ me: p @ ssword @ git / reponame.git
URL de solución a utilizar: https: // usern% 40me: p%40ssword@git/reponame.git
fuente
Ejecute esto primero antes de la clonación de la misma manera, ¡debería arreglarse!
fuente
Esta es una excelente pregunta de Stack Overflow, y las respuestas han sido muy instructivas, de modo que pude resolver un problema molesto con el que me topé recientemente.
La organización para la que trabajo utiliza
Atlassian's BitBucket
productos (no Github), esencialmente su versión de GitHub para que los repositorios se puedan asegurar completamente en las instalaciones. Me encontraba con un problema similar a @coordinate, ya que se requería mi contraseña para un nuevo repositorio que revisé. Mis credenciales se habían guardado globalmente para todos losBitBucket
proyectos, por lo que no estoy seguro de qué provocó la pérdida de credenciales.En resumen, pude ingresar el siguiente comando de GIT (que proporcionaba solo mi nombre de usuario), que luego solicitó al Administrador de credenciales de Git que me solicitara la contraseña, que luego pude guardar.
NOTA: las subrutas de directorio entre paréntesis simplemente hacen referencia a referencias internas, ¡y variarán para usted!
fuente
Si está usando
http/https
y está buscando AUTOMATIZAR COMPLETAMENTE el proceso sin requerir ninguna entrada del usuario o ninguna solicitud del usuario (por ejemplo: dentro de una tubería de CI / CD), puede usar el siguiente enfoque de apalancamientogit credential.helper
donde puede elegir establecer la
ALICE_GITHUB_PASSWORD
variable de entorno desde un comando de shell anterior o desde su configuración de canalización, etc.Recuerde que git-credential-helper basado en "almacenar" almacena contraseñas y valores en texto plano. Así que asegúrese de que su token / contraseña tenga permisos muy limitados.
Ahora simplemente use https: //[email protected]/my_repo.git donde su sistema automatizado necesite obtener el repositorio: usará las credenciales
alice
engithub.com
git-credential-helper como almacenadas.fuente