Натисніть на GitHub без пароля за допомогою ssh-key


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.

виявився успішним, і коли я перейменував ключ, він не вдається.

Але коли я хочу натиснути на свої зміни, все-таки запитайте мене про поєднання імені користувача та пароля.

Чи є спосіб натиснути без пароля?


9
Переконайтеся, що ви не використовуєте https://github...в пультах. Вони також повинні відповідати git@github...формату.
cjc343

Відповіді:


421

Якщо він запитує у вас ім’я користувача та пароль, ваш вихідний джерело вказує на URL-адресу HTTPS, а не на 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-адресу.


4
Це вирішило це, але я постійно запитую себе, чому тоді Github радить вам вказати віддалений кінець нового сховища на URL-адресу http за замовчуванням. Я щойно створив сховище з нуля, і мені було запропоновано можливість встановлення віддаленої 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

Якщо ви дійсно використовуєте URL-адресу SSH, але все ж запитуєте ім’я користувача та пароль під час натискання 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 Генерувати ключі SSH


0

Як завжди, створіть ключ SSH та вставте відкритий ключ у GitHub. Додайте приватний ключ до ssh-агента. (Я припускаю, що це ви зробили.)

Щоб перевірити, чи все правильно, використовуйте ssh -T git@github.com

Далі, не забудьте змінити віддалену точку так:

git remote set-url origin git@github.com:username/your-repository.git

-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]

Вибачте, це питання не в тому, як створити ключі, а налаштувати git, щоб використовувати ключ замість автентифікації
листопада
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.