Saya mencoba mengautentikasi dengan GitHub menggunakan token akses pribadi. Dalam file bantuan di github, dinyatakan menggunakan metode cURL untuk mengautentikasi ( https://help.github.com/articles/creating-an-access-token-for-command-line-use ). Saya telah mencoba ini, tetapi saya masih tidak dapat mendorong ke GitHub. Harap dicatat, saya mencoba untuk mendorong dari server yang tidak diautentikasi (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
Kode ini menyebabkan kesalahan:
remote: Akses anonim ke scuzzlebuzzle / ol3-1.git ditolak.
fatal: Otentikasi gagal untuk ' https://github.com/scuzzlebuzzle/ol3-1.git/ ' "
sumber
git remote set-url origin https://scuzzlebuzzle:<MYTOKEN>@github.com/scuzzlebuzzle/ol3-1.git
Pertama, Anda perlu membuat token akses pribadi (PAT). Ini dijelaskan di sini: https://help.github.com/articles/creating-an-access-token-for-command-line-use/
Anehnya, artikel tersebut memberi tahu Anda cara membuatnya, tetapi sama sekali tidak memberi petunjuk apa yang harus dilakukan dengannya. Setelah sekitar satu jam mempelajari dokumentasi dan Stack Overflow, saya akhirnya menemukan jawabannya:
Saya sebenarnya dipaksa untuk mengaktifkan otentikasi dua faktor oleh kebijakan perusahaan saat saya bekerja dari jarak jauh dan masih memiliki perubahan lokal, jadi sebenarnya itu bukan yang
clone
saya butuhkan, tetapipush
. Saya membaca di banyak tempat bahwa saya perlu menghapus dan membuat ulang remote, tetapi pada kenyataannyapush
perintah normal saya bekerja persis sama seperti diclone
atas, dan remote tidak berubah:(@YMHuang menempatkan saya di jalur yang benar dengan tautan dokumentasi.)
sumber
Untuk menghindari penyerahan "kunci kastil" ...
Perhatikan bahwa respons sigmavirus24 mengharuskan Anda memberi Travis token dengan izin yang cukup luas - karena GitHub hanya menawarkan token dengan cakupan luas seperti "tulis semua repo publik saya" atau "tulis semua repo pribadi saya".
Jika Anda ingin mempersempit akses (dengan sedikit lebih banyak pekerjaan!), Anda dapat menggunakan kunci penerapan GitHub yang dikombinasikan dengan bidang yaml terenkripsi Travis.
Berikut adalah sketsa cara kerja teknik tersebut ...
Pertama buat kunci penerapan RSA (melalui
ssh-keygen
) yang dipanggilmy_key
dan tambahkan sebagai kunci penerapan di setelan repo github Anda.Kemudian...
Kemudian gunakan
$password
file tersebut untuk mendekripsi kunci penerapan Anda pada waktu integrasi, dengan menambahkan ke file yaml Anda:Catatan: baris terakhir sudah mengisi kunci RSA github, yang menghindari kebutuhan untuk menerima secara manual pada saat membuat koneksi.
sumber
Otomatisasi / otomatisasi Git dengan token OAuth
Ini juga bekerja dalam
git push
perintah.Referensi: https://help.github.com/articles/git-automation-with-oauth-tokens/
sumber
Ini berfungsi untuk saya menggunakan ssh :
Pengaturan → Pengaturan pengembang → Buat token baru .
sumber
git remote add origin https://[USERNAME]:[NEW TOKEN]@github.com/[USERNAME]/[REPO].git
git remote add origin https://[USERNAME]:[TOKEN]@git.mycompany.com/[ORGANIZATION]/[REPO].git
git remote set-url origin https://[TOKEN]@git.mycompany.com/[ORGANIZATION]/[REPO].git> /dev/null 2>&1
untuk menghindari pencatatan hasil git yang tidak aman. Simpan token dalam variabel agar tidak ada di log. Tapi itu perlu disimpan di suatu tempat. Untuk mengamankan lebih lanjut Anda dapat menyimpannya dienkripsi. Pendekatan ini misalnya didukung oleh Travis CI.Biasanya saya melakukan seperti ini
Git_token membaca dari konfigurasi variabel di devops azure.
Anda dapat membaca blog lengkap saya di sini
sumber
Setelah berjuang dengan masalah ini selama hampir seharian penuh melakukan pengkodean keras di bagian ORG / REPO ke dalam skrip build kami mendapatkan kesalahan 'remote not found' yang ditakuti, akhirnya menemukan solusi yang berfungsi untuk menggunakan
TRAVIS_REPO_SLUG
. Mengalihkan ini untuk atribut hardcode langsung bekerja.sumber
Dengan berjuang berjam-jam untuk menerapkan token GitHub akhirnya berfungsi seperti di bawah ini:
%d%H%M
pada kata pertandingan'-123456-whatever'
Berikut kode lengkapnya:
Keluaran...
sumber
Kata sandi yang Anda gunakan untuk masuk ke portal github.com tidak berfungsi di VS Code CLI / Shell. Anda harus menyalin Token PAT dari URL https://github.com/settings/tokens dengan membuat token baru dan menempelkan string itu di CLI sebagai kata sandi.
sumber
Jika Anda menggunakan GitHub Enterprise dan mengkloning repo atau mendorong memberi Anda kesalahan 403 alih-alih meminta nama pengguna / token, Anda dapat menggunakan ini:
sumber