tag - Autentica con GitHub usando token
github create tag from commit (5)
Estoy intentando autenticarme con GitHub usando un token de acceso personal. En los archivos de ayuda de github, indica que debe usar el método curl para autenticarse ( https://help.github.com/articles/creating-an-access-token-for-command-line-use ). He intentado esto, pero todavía no puedo presionar a GitHub. Tenga en cuenta que estoy tratando de presionar desde un servidor no autenticado (Travis-CI).
cd $HOME
git config --global user.email "[email protected]"
git config --global user.name "username"
curl -u "username:<MYTOKEN>" https://github.com/username/ol3-1.git
git clone --branch=gh-pages https://github.com/username/ol3-1.git gh-pages
cd gh-pages
mkdir buildtest
cd buildtest
touch asdf.asdf
git add -f .
git commit -m "Travis build $TRAVIS_BUILD_NUMBER pushed to gh-pages"
git push -fq origin gh-pages
Este código causa los errores:
remoto: acceso anónimo a scuzzlebuzzle / ol3-1.git denied.
fatal: Error de autenticación para '' https://github.com/scuzzlebuzzle/ol3-1.git/ '' "
Gracias
Para evitar entregar "las llaves del castillo" ...
Tenga en cuenta que la respuesta de sigmavirus24 requiere que le proporcione a Travis un token con permisos bastante amplios, ya que GitHub solo ofrece tokens con amplios ámbitos como "escribir todos mis repos públicos" o "escribir todos mis repositorios privados".
Si desea restringir el acceso (¡con un poco más de trabajo!) Puede usar las claves de implementación de GitHub combinadas con los campos yaml cifrados de Travis.
Aquí hay un boceto de cómo funciona la técnica ...
Primero genere una clave de implementación de RSA (a través de ssh-keygen
) llamada my_key
y agréguela como una clave de implementación en la configuración de github repo.
Entonces...
$ password=`openssl rand -hex 32`
$ cat my_key | openssl aes-256-cbc -k "$password" -a > my_key.enc
$ travis encrypt --add password=$password -r my-github-user/my-repo
A continuación, utilice el archivo $password
para descifrar su clave de despliegue en tiempo de integración, agregando a su archivo yaml:
before_script:
- openssl aes-256-cbc -k "$password" -d -a -in my_key.enc -out my_deploy_key
- echo -e "Host github.com/n IdentityFile /path/to/my_deploy_key" > ~/.ssh/config
- echo "github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==" > ~/.ssh/known_hosts
Nota: la última línea rellena previamente la clave RSA de github, lo que evita la necesidad de aceptar manualmente en el momento de la conexión.
@YMHuang me puso en el camino correcto con el enlace de documentación.
En primer lugar, debe crear un token de acceso personal. Esto se describe aquí: https://help.github.com/articles/creating-an-access-token-for-command-line-use/
Laughably, el artículo te dice cómo crearlo, pero no da absolutamente ninguna pista de qué hacer con él. Después de aproximadamente una hora de pescar con arrastre y SO, finalmente encontré la respuesta:
$ git clone https://github.com/user-or-organisation/myrepo.git
Username: <my-username>
Password: <my-personal-access-token>
De hecho, me vi obligado a habilitar 2FA según la política de la compañía mientras trabajaba de forma remota y aún tenía cambios locales, por lo que en realidad no era clone
que necesitaba, sino push
. Leí en muchos lugares que necesitaba eliminar y volver a crear el control remoto, pero de hecho mi comando push
normal funcionaba exactamente igual que el clone
anterior, y el control remoto no cambiaba:
$ git push https://github.com/user-or-organisation/myrepo.git
Username: <my-username>
Password: <my-personal-access-token>
Automatización de automatización / Git con tokens de OAuth Automatización de Git con tokens de OAuth
$ git clone https://github.com/username/repo.git
Username: your_token
Password:
También funciona en el comando git push
Referencia https://help.github.com/articles/git-automation-with-oauth-tokens/
Esto funcionó para mí usando ssh :
Settings
> Settings
Developer settings
> Generate new token
git remote rm origin
git remote add origin https://[APPLICATION]:[NEW TOKEN]@github.com/[ORGANISATION]/[REPO].git
Tu comando curl
es completamente incorrecto. Deberías estar usando lo siguiente
curl -H ''Authorization: token <MYTOKEN>'' ...
Aparte de eso, eso no autoriza a tu computadora a clonar el repositorio si, de hecho, es privado. (Sin embargo, echar un vistazo indica que no es así). Lo que normalmente haría es lo siguiente:
git clone https://scuzzlebuzzle:<MYTOKEN>@github.com/scuzzlebuzzle/ol3-1.git --branch=gh-pages gh-pages
Eso agregará sus credenciales al control remoto creado al clonar el repositorio. Desafortunadamente, sin embargo, no tienes control sobre cómo Travis clona tu repositorio, así que tienes que editar el control remoto de esa manera.
# After cloning
cd gh-pages
git remote rm origin
git remote add origin https://scuzzlebuzzle:<MYTOKEN>@github.com/scuzzlebuzzle/ol3-1.git
Eso arreglará su proyecto para usar un control remoto con credenciales integradas.