[英]How to git pull from public repo via ssh without a key?
我有一個公共回購, https:\/\/github.com\/rlpowell\/config<\/a> 。 我曾經能夠在沒有任何 ssh 密鑰(即來自 cron)的情況下運行 git pull,並且它工作正常,使用 git@github.com:rlpowell\/config.git URL(即 SSH URL)。 這不再有效,我不知道為什么,但它確實<\/em>適用於我的兩個朋友。
我希望能夠在沒有 ssh 密鑰的情況下 git pull 一個公共 repo,或者至少了解為什么它對我不起作用而對其他人起作用。
$ git clone git@github.com:rlpowell/config.git ; cd config ; (unset SSH_AUTH_SOCK ; ssh-add -l ; git pull )
Cloning into 'config'...
Warning: Permanently added the RSA host key for IP address '192.30.253.113' to the list of known hosts.
remote: Counting objects: 1061, done.
remote: Total 1061 (delta 0), reused 0 (delta 0), pack-reused 1061
Receiving objects: 100% (1061/1061), 544.42 KiB | 495.00 KiB/s, done.
Resolving deltas: 100% (632/632), done.
Checking connectivity... done.
Could not open a connection to your authentication agent.
Already up-to-date.
嘗試先運行此命令:
ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no github.com
然后git pull
回來。
我只是嘗試了沒有密鑰,我確認它無法工作(沒有SSH密鑰):
$ git clone git@github.com:rlpowell/config.git
Cloning into 'config'...
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
這是因為GitHub不會通過SSH授權匿名訪問(而不是https),因為其他git repo服務器決定這樣做( 如Gogits或go-gitea )
GitHub 確實提到 :
SSH URL通過SSH(一種安全協議)提供對Git存儲庫的訪問。
要使用這些URL,您必須在計算機上生成SSH密鑰對,並將公鑰添加到您的GitHub帳戶。
(強調必須 )
為什么? (在2015年問) 。 雖然可以將sshd配置為允許匿名訪問 ,但是沒有公共站點會考慮設置它:它的安全風險太大了。
需要在沒有特定密鑰的情況下工作
如果您需要匿名訪問,可以使用:
git://github.com/<user>/<repo>
,雖然它使用的是端口9418,它通常在企業環境中被阻止。 問題似乎與ssh鍵有關,至少響應它:
Enter passphrase for key '/home/rlpowell/.ssh/id_rsa':
Permission denied (publickey).
所以你需要將你的公鑰添加到github
你也可以運行:
ssh -T git@github.com
檢查與github的ssh連接
對於公共回購,您不需要任何密碼。 您可以使用他們的https鏈接直接克隆:
例如git clone https://github.com/rlpowell/config.git
我想你不能用SSH做到這一點。 這是一個很好的解釋:
如果你想克隆和拉動沒有任何密鑰的東西使用HTTP(S)。
所以
git clone http://github.com/rlpowell/config.git
Klone nach 'config' ...
warning: Leite nach https://github.com/rlpowell/config.git/ um
remote: Counting objects: 1234, done.
remote: Total 1234 (delta 0), reused 0 (delta 0), pack-reused 1234
Empfange Objekte: 100% (1234/1234), 2.01 MiB | 1.07 MiB/s, Fertig.
Löse Unterschiede auf: 100% (758/758), Fertig.
“.git / config”將如下所示:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = http://github.com/rlpowell/config.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
如果您已經克隆或使用git config
,您可以稍后更改該文件
使用這些設置,您可以隨時git pull
。
為什么使用url git@github.com:rlpowell/config.git
不起作用是由於以下原因:
條目git@github.com:rlpowell
將強制您使用SSH進行身份驗證。 如果您想要SSH身份驗證,Github要求您使用密鑰對。
如果您想擁有一個自動cronjob用戶並仍然使用SSH,請為該用戶創建一個密鑰對,並將公共用戶上傳到gitlab。
但如果您只想克隆和拉取,HTTPS將綽綽有余。 順便說一句,通過HTTPS進行驗證也是可能的。 如果您嘗試推送更改,Github會詢問您的用戶名和密碼。 如果您使用的是cronjobs,建議不要這樣做。
您的證書有問題。 簡單的解決方案就是創建一個新的並替換舊的。
問題可能是由幾個問題引起的,例如:錯誤的主機文件輸入,調用的ssh證書等等。
所以最好的辦法是創建一個新證書並對其進行測試。
只需按照這些步驟操作即可立即設置您的ssh密鑰:
生成新的ssh密鑰(如果已有密鑰,則跳過此步驟)
ssh-keygen -t rsa -C "your@email"
將密鑰設置在home/.ssh
目錄(或Users/<your user>.ssh
在windows下)后,打開它並復制內容
SSH keys
Add ssh key
你們都准備去了:-)
如果不進行身份驗證, 則無法連接到SSH服務器。
因此, 如果沒有注冊的SSH密鑰,就無法克隆或覆蓋SSH。
您有兩種選擇:
$ git clone https:// '...' 克隆到 'Africa-Data-School'... 遠程:枚舉對象:74,完成。 遠程:計數對象:100% (74/74),完成。 遠程:壓縮對象:100% (59/59),完成。 遠程:總計 74(增量 24),重用 64(增量 15),打包重用 0 接收對象:100%(74/74),23.66 MiB | 77.00 KiB/s,完成。 解決增量:100% (24/24),完成。 更新文件:100% (36/36),完成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.