Назад | Перейти на главную страницу

git pull: в доступе отказано (публичный ключ)

Итак, я пытаюсь заставить git работать с моим сервером репо (1.2.3.4) (debian) на моем новом сервере на AWS (4.5.6.7 / 10.0.0.111).

Мое репо .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).

Успешный вход по ssh на сервере репо (1.2.3.4) в /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

Тогда не более того.

Как я могу отладить ошибку аутентификации git ssh для 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 сгенерирует ssh-ключ для 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`