Итак, я пытаюсь заставить 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`