Подтвердить что ты не робот

Как git вытащить из публичного репо через ssh без ключа?

У меня есть публичное репо, https://github.com/rlpowell/config. Раньше я мог запускать git pull без каких-либо ssh-ключей (т.е. От cron), и он работает нормально, используя URL-адрес git @github.com: rlpowell/config.git(т.е. URL SSH). Это больше не работает, и я понятия не имею, почему, но он работает для двух моих друзей.

Я хотел бы иметь возможность git вытащить публичное репо без ключа ssh или, по крайней мере, понять, почему он не работает для меня и делает для других людей.

Здесь друг пытается мой тестовый пример:

$ git clone [email protected]:rlpowell/config.git  ; cd config ; (unset SSH_AUTH_SOCK ; ssh-add -l ; git pull )
Cloning into 'config'...
Warning: Permanently added the RSA host key for IP address '192.30.253.113' to the list of known hosts.
remote: Counting objects: 1061, done.
remote: Total 1061 (delta 0), reused 0 (delta 0), pack-reused 1061
Receiving objects: 100% (1061/1061), 544.42 KiB | 495.00 KiB/s, done.
Resolving deltas: 100% (632/632), done.
Checking connectivity... done.
Could not open a connection to your authentication agent.
Already up-to-date.

И здесь я делаю то же самое:

$ git clone [email protected]:rlpowell/config.git  ; cd config ; (unset SSH_AUTH_SOCK ; ssh-add -l ; git pull )
Cloning into 'config'...
remote: Counting objects: 1061, done.
remote: Total 1061 (delta 0), reused 0 (delta 0), pack-reused 1061
Receiving objects: 100% (1061/1061), 544.42 KiB | 0 bytes/s, done.
Resolving deltas: 100% (632/632), done.
Checking connectivity... done.
Could not open a connection to your authentication agent.
Enter passphrase for key '/home/rlpowell/.ssh/id_rsa':
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

(я нажимаю enter в командной строке ssh key).

В репо,.git/config:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        url = [email protected]:rlpowell/config.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master

И git config -l:

$ git config -l
[email protected]
user.name=Robin Lee Powell
push.default=matching
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
[email protected]:rlpowell/config.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master

git версия 2.5.5

strace говорит, что вещь, на самом деле работающая ssh,

ssh [email protected] git-upload-pack 'rlpowell/config.git'
4b9b3361

Ответ 1

сначала попробуйте выполнить эту команду:

ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no github.com

а затем git pull снова.

Ответ 2

Я просто попробовал это без ключа, и я подтверждаю, что он не может работать (без ключа SSH):

$ git clone [email protected]:rlpowell/config.git
Cloning into 'config'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Это связано с тем, что GitHub не разрешает анонимный доступ через SSH (в отличие от https), как решили другие ресо-серверы git (like Гогиты или go-gitea)

GitHub упоминает:

URL-адреса SSH предоставляют доступ к репозиторию git через SSH, безопасный протокол.
Чтобы использовать эти URL-адреса, должен создать на вашем компьютере пару ключей SSH и добавить открытый ключ в свою учетную запись GitHub.

(акцент должен быть)

Почему? (спросил в 2015 году). В то время как sshd можно настроить для анонимного доступа, ни один публичный сайт никогда не подумает об этом: слишком большой риск для безопасности.

должен работать без определенного ключа

Если вам нужен анонимный доступ, вы можете использовать:

  • URL https
  • a git URL: git://github.com/<user>/<repo>, хотя он использует порт 9418, который часто блокируется в корпоративной среде.

Ответ 3

Кажется, что проблема связана с ключами ssh, по крайней мере, ответ:

Enter passphrase for key '/home/rlpowell/.ssh/id_rsa':
Permission denied (publickey).

Итак, вам нужно добавить свой открытый ключ в github

Добавление нового ключа SSH в вашу учетную запись GitHub

Также вы можете запустить:

ssh -T [email protected]

для проверки подключения ssh к github

Ответ 4

Это публичное репозиторинг GitHub, и вы просто хотите извлечь его из него, поэтому вместо этого вы можете использовать URL-адрес HTTPS:

https://github.com/rlpowell/config.git

https://github.com/rlpowell/config.git

Ответ 5

Вы выдаете сертификат. простое решение - просто создать новый и заменить старый.

Проблема может быть вызвана несколькими проблемами, например: неправильная запись файла хоста, вызывается сертификат ssh и т.д.

поэтому лучше всего создать новый сертификат и протестировать его.

Просто следуйте этим шагам, и вы быстро установите свой ssh-ключ:

  • Создайте новый ключ ssh (или пропустите этот шаг, если у вас уже есть ключ)
    ssh-keygen -t rsa -C "[email protected]"

  • После того, как ваш ключ установлен в каталог home/.ssh (или Users/<your user>.ssh под окнами), откройте его и скопируйте контент


Как добавить ключ sh в учетную запись github?

  • Вход в аккаунт github
  • Нажмите на ранчо в правом верхнем углу (Настройки)
    github account settigns
  • Нажмите SSH keys
    ssh key section
  • Нажмите Add ssh key
    Add ssh key
  • Вставьте свой ключ и сохраните

И вы все решили: -)

Ответ 6

Для публичного репо вам не нужен пароль. Вы можете напрямую клонировать, используя ссылку https:

eg git clone https://github.com/rlpowell/config.git

Ответ 7

Вы не можете подключиться к SSH-серверу без проверки подлинности.

Таким образом, невозможно клонировать или вытаскивать SSH без зарегистрированного ключа SSH.

У вас есть два варианта:

  • Запустите задание cron как пользователь, у которого есть ключ SSH, связанный с учетной записью GitHub (вы можете использовать файл конфигурации, чтобы указать конкретный файл ключа, если хотите).
  • Используйте HTTPS.

Ответ 8

Я думаю, вы не можете сделать это с помощью SSH. Вот хорошее объяснение:

Сравнение протоколов GitHub

Если вы хотите клонировать и вытаскивать материал без использования ключа, используйте HTTP (S).

Итак,

git clone http://github.com/rlpowell/config.git
Klone nach 'config' ...
warning: Leite nach https://github.com/rlpowell/config.git/ um
remote: Counting objects: 1234, done.
remote: Total 1234 (delta 0), reused 0 (delta 0), pack-reused 1234
Empfange Objekte: 100% (1234/1234), 2.01 MiB | 1.07 MiB/s, Fertig.
Löse Unterschiede auf: 100% (758/758), Fertig.

".git/config" будет выглядеть так:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = http://github.com/rlpowell/config.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

Вы можете впоследствии изменить этот файл, если вы уже клонировали или используете git config

С этими настройками вы можете git pull в любое время.

Почему использование URL-адреса [email protected]:rlpowell/config.git не работает по следующей причине:

Запись [email protected]:rlpowell заставит вас пройти аутентификацию с помощью SSH. Github требует, чтобы вы использовали ключевые пары, если хотите аутентификацию SSH.

Если вы хотите иметь автоматического пользователя cronjob и по-прежнему использовать SSH, создайте в качестве этого пользователя пару ключей и загрузите общедоступный файл в gitlab.

Но если вы хотите клонировать и тянуть, HTTPS будет более чем достаточно. Кстати, возможна аутентификация через HTTPS. Github запрашивает ваше имя пользователя и пароль, если вы пытаетесь нажать изменения. Это, конечно, не рекомендуется, если вы используете cronjobs.