Ssh

git pull:權限被拒絕(公鑰)

  • July 24, 2017

所以我試圖讓 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`

引用自:https://serverfault.com/questions/759123