Нажмите на GitHub без пароля, используя ssh-ключ

215

Я сгенерировал пару ключей SSH без пароля и добавил открытый ключ в GitHub.

Связь с

user@dev:/var/www/project# ssh -T git@github.com
Hi User! You've successfully authenticated, but GitHub does not provide shell access.

был успешным, и когда я переименовываю ключ, он терпит неудачу.

Но когда я хочу отправить свои изменения, он все равно спрашивает меня о моем имени пользователя и пароле.

Есть ли способ нажать без пароля?

Sebus
источник
9
Убедитесь, что вы не используете https://github...в своих пультах. Они также должны следовать git@github...формату.
cjc343

Ответы:

421

Если он запрашивает у вас имя пользователя и пароль, ваш удаленный источник указывает на URL-адрес HTTPS, а не на URL-адрес SSH.

Измените это на ssh.

Например, проект GitHub, такой как Git, будет иметь URL-адрес HTTPS:

https://github.com/<Username>/<Project>.git

И SSH один:

git@github.com:<Username>/<Project>.git

Ты можешь сделать:

git remote set-url origin git@github.com:<Username>/<Project>.git

изменить URL.

manojlds
источник
4
Это решило проблему, но я продолжаю спрашивать себя, зачем Github советовать вам указывать удаленный конец нового репозитория на http URL по умолчанию. Я просто создал хранилище с нуля, и мне предложили установить удаленный URL https, а не git.
Преслав Рачев
2
Вот быстрая однострочная команда оболочки, которая автоматически изменит ваш https URL на соответствующий git (работает только для URL github!):git remote set-url origin $(git remote show origin | grep "Fetch URL" | sed 's/ *Fetch URL: //' | sed 's/https:\/\/github.com\//git@github.com:/')
Кристофер Шроба
11

Кроме того, кажется, что вы должны пропустить имя пользователя

git remote set-url origin git@gist.github.com:<Project code>
Гордон Уэллс
источник
10

В случае, если вы действительно используете SSH URL, но все еще спрашиваете имя пользователя и пароль при нажатии git:

git remote set-url origin git@github.com:<Username>/<Project>.git

Вы должны попробовать устранить неполадки с:

ssh -vT git@github.com

Ниже приведен пример выходных данных:

...
debug1: Trying private key: /c/Users/Yuci/.ssh/id_rsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_dsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_ecdsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).

На самом деле я уже добавил открытый ключ в GitHub, и у меня также есть закрытый ключ. Однако мой закрытый ключ имеет другое имя /c/Users/Yuci/.ssh/github_rsa.

Согласно примеру вывода, Git пытается /c/Users/Yuci/.ssh/id_rsa, чего у меня нет. Таким образом, я мог бы просто скопировать github_rsaв id_rsaв той же директории.

cp /c/Users/Yuci/.ssh/github_rsa /c/Users/Yuci/.ssh/id_rsa

Теперь, когда я ssh -vT git@github.comснова бегу , у меня есть:

...
debug1: Trying private key: /c/Users/Yuci/.ssh/id_rsa
debug1: Authentication succeeded (publickey).
...
Hi <my username>! You've successfully authenticated, but GitHub does not provide shell access.
...

И теперь я могу нажать на GitHub без запроса имени пользователя и пароля :-)

Юйцы
источник
5

Вы должны использовать версию SSH , а не HTTPS . Когда вы клонируете из репозитория, скопируйте ссылку с версией SSH , потому что SSH прост в использовании и решает все проблемы с доступом. Вы можете установить доступ для каждого SSH, который вы вводите в свою учетную запись (например, push, pull, clone и т. Д.)

Вот ссылка, которая говорит, почему нам нужен SSH и как его использовать: шаг за шагом

Git Generate SSH Keys

Азарапет Туанян
источник
0

Как обычно, создайте ключ SSH и вставьте открытый ключ в GitHub. Добавьте закрытый ключ в ssh-agent. (Я предполагаю, что это то, что вы сделали.)

Чтобы проверить все правильно, используйте ssh -T git@github.com

Далее, не забудьте изменить удаленную точку следующим образом:

git remote set-url origin git@github.com:username/your-repository.git
Seenivasan
источник
-4

Используя командную строку:

Введите, ls -al ~/.sshчтобы увидеть, если существующие ключи SSH присутствуют.

В терминале есть: Каталог не существует

Затем сгенерируйте новый ключ SSH

Шаг 1.

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

шаг 2.

Enter a file in which to save the key (/Users/you/.ssh/id_rsa): <here is file name and enter the key>

шаг 3.

Enter passphrase (empty for no passphrase): [Type a password]

Enter same passphrase again: [Type password again]
Jitendra
источник
Извините, этот вопрос не о том, как создать ключи, а о том, как настроить git для использования ключа вместо аутентификации
Sebus