git pull:權限被拒絕(公鑰)
所以我試圖讓 git 在我在 AWS 上的新伺服器(4.5.6.7 / 10.0.0.111)上使用我的 repo 伺服器(1.2.3.4)(debian)。
我的倉庫的 .git/config
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [branch "master"] remote = origin merge = refs/heads/master [remote "origin"] url = git@1.2.3.4:/opt/git/repo.git fetch = +refs/heads/*:refs/remotes/origin/*
我收到此錯誤:
[ec2-user@ip-10-0-0-111 html]$ sudo git pull Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
我的公鑰存在於 /home/git/.ssh/authorized_keys
我之前被提示輸入我的回購伺服器上使用者 git 的密碼(不是我的密鑰文件密碼)。然後我禁用了 git 使用者的密碼驗證,並收到了拒絕的權限。在這段時間和現在出現上述錯誤的情況下,我能夠通過 ssh 成功登錄:
ssh git@1.2.3.4
沒有密碼提示等:
debug1: Offering RSA public key: /home/ec2-user/.ssh/id_rsa debug1: Server accepts key: pkalg ssh-rsa blen 279 debug1: Authentication succeeded (publickey).
在 repo 伺服器 (1.2.3.4) 上成功的 ssh 登錄在 /var/log/auth.log 中如下所示:
Feb 22 15:45:44 hostname sshd[20142]: Connection from 4.5.6.7 port 50409 Feb 22 15:45:44 hostname sshd[20142]: Found matching RSA key: <fingerprint> Feb 22 15:45:44 hostname sshd[20142]: Accepted publickey for git from 4.5.6.7 port 50409 ssh2 Feb 22 15:45:44 hostname sshd[20142]: pam_unix(sshd:session): session opened for user git by (uid=0)
當我嘗試 git pull 這就是 auth.log 的樣子:
Feb 22 15:46:41 hostname sshd[20177]: Connection from 4.5.6.7 port 50410
然後僅此而已。
當正常的 ssh 命令完美執行時,如何調試 git 的 git ssh 身份驗證失敗?
你在
git pull
下做sudo
,這就是問題所在。只做git pull
會為你工作。也在做
sudo ssh git@1.2.3.4
會為你失敗。問題是
sudo
更改了使用者並且它不再看到您的身份文件/home/ec2-user/.ssh/id_rsa
(它在 中搜尋/root/.ssh/id_rsa
)。對您的普通使用者執行此pull
操作,或將您的密鑰複製/移動到目標使用者的適當位置 (root
)。
您的 ssh 密鑰不是無效的。
ssh-keygen -t rsa -C "your_email@example.com"
將為目前使用者生成 ssh 密鑰。例如:$ whoami nodejh # It will generate the ssh key for user: nodejh $ ssh-keygen -t rsa -C "jianghangscu@gmail.com # Check that you are connecting to the correct server $ ssh -T git@github.com Hi username! You've successfully authenticated...
sudo ssh-keygen -t rsa -C "jianghangscu@gmail.com
將為root
. 所以這ssh -T git@github.com
將返回Permission Denied (publickey)
,但sudo ssh -T git@github.com
工作正常。如果要為使用者生成 ssh 密鑰:
admin
,您可以更改目前使用者admin
然後生成 ssh 密鑰。# change the current user to admin $ su admin # generate ssh key for `admin` $ ssh-keygen -t rsa -C "jianghangscu@gmail.com`