我正在尝试使用个人访问令牌与GitHub进行身份验证。在GitHub的帮助文件中,它声明使用cURL方法进行身份验证(创建个人访问令牌)。我已经尝试过了,但是我仍然无法推送到GitHub。请注意,我正试图从未经验证的服务器(特拉维斯CI)推送。
cd $HOME
git config --global user.email "emailaddress@yahoo.com"
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
这段代码会导致以下错误:
remote:匿名访问scuzzlebuzz /ol3-1。git否认。
致命:'https://github.com/scuzzlebuzzle/ol3-1.git/'认证失败"
我使用的是Ubuntu 20.04 (Focal Fossa),我一直收到消息说我很快就不能从控制台登录了。我非常困惑。
最后,我得到了下面的URL将工作。但是你需要知道如何创建一个PAT(个人访问令牌),你必须把它保存在你电脑上的一个文件中。
下面是最终URL的样子:
git push https://1234567890123456789012345678901234567890@github.com/user-name/repo.git
长PAT(个人访问令牌)值——URL中//和@符号之间的整个长值就是你的PAT。
User-name将是您的用户名
回购。Git将是您的确切存储库名称
你也可以这样使用它:
当你做
git push
1. 系统将提示您输入用户名和密码
2. 只要像往常一样提交您的用户名
3.现在提交您的PAT作为您的密码,它将工作。
您需要按照以下步骤生成一个PAT:创建个人访问令牌
这将为您提供PAT值,您将放置在您的URL。
当您创建PAT时,请确保您选择了以下选项,以便它能够允许您管理存储库。
拯救你的PAT或失去它
获得PAT后,需要将其保存在本地文件中,以便再次使用。如果你不把它保存在某个地方,就没有办法再看到它,你将被迫创建一个新的PAT。
现在你至少需要:
在控制台中显示它的方法,以便您可以再次看到它。
或者,一种自动复制到剪贴板的方法。
对于1,只需使用:
cat ~/files/myPatFile.txt
其中路径是存储PAT值的位置和文件的真实路径。
2
xclip -selection clipboard < ~/files/myPatFile.txt
这将把文件的内容复制到剪贴板,这样您就可以更容易地使用PAT。
供您参考-如果您没有xclip,请执行以下操作:
sudo apt-get install xclip
它下载并安装xclip。如果没有apt-get,可能需要使用其他安装程序(如YUM)。
为了避免交出“城堡的钥匙”……
注意,sigmavirus24的响应要求你给Travis一个具有相当广泛权限的令牌——因为GitHub只提供具有广泛作用域的令牌,如“写我所有的公共回购”或“写我所有的私人回购”。
如果你想要收紧访问(需要更多的工作!),你可以使用GitHub部署密钥结合Travis加密yaml字段。
以下是该技术如何工作的草图……
首先生成一个名为my_key的RSA部署密钥(通过ssh-keygen),并将其作为部署密钥添加到你的github repo设置中。
然后……
$ 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
然后使用$password文件在集成时解密你的部署密钥,通过添加到你的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
注意:最后一行预填充github的RSA密钥,这避免了在连接时手动接受的需要。