фатальный: не удалось прочитать имя пользователя для https://github.com: нет такого файла или каталога

99

Когда я пытаюсь извлечь код с помощью git Bash в Windows, у меня возникает следующая проблема:

fatal: could not read Username for 'https://github.com': No such file or directory

Я уже пытался реализовать принятое решение, представленное здесь:

... но проблема не устранена. После добавления / удаления происхождения я все еще получаю ту же ошибку.

noobie-php
источник
Вы настраивали имя пользователя? git config --global user.name "Your Name Here"
Рауль Андрес
Я уже пробовал это, но это не относится к моему имени пользователя git, я думаю, что это создает проблему для имени пользователя репозитория git, который я здесь вызываю.
noobie-php

Ответы:

70

Следуйте инструкциям по настройке ключей SSH здесь: https://help.github.com/articles/generating-ssh-keys

ИЛИ

git remote add origin https://{username}:{password}@github.com/{username}/project.git
Тони Зампогна
источник
3
Второй вариант не сработал, потому что я уже добавил origin github. Я удалил источник [git remote remove origin], а затем написал ответ с моим именем пользователя и паролем, и все сработало нормально.
P_Rein 04
10
вместо удаления и повторного добавления источника вы также можете просто изменить URL-адрес, используяgit remote set-url origin https://{username}:{password}@github.com/...
Крис
10
Решение @Chris работает, но оно хранит пароль учетной записи пользователя на github и позволяет его прочитать, просто набрав егоgit remote -v
Джефферсон Сильва,
Вариант Криса у меня сработал! Я продолжил это с Джефферсоном Сильвой, и это сработало. Все еще есть error: cannot spawn sh: No such file or directoryсообщение ...
TheSciGuy
14

Я столкнулся с той же проблемой. Эта проблема возникла, когда я клонировал с использованием URL-адреса HTTPS, а затем попытался отправить изменения с помощью Git Bash в Windows, используя:

git clone https://github.com/{username}/{repo}.git

Однако, когда я использовал URL-адрес SSH для клонирования, этой проблемы не возникло:

git clone git@github.com:{username}/{repo}.git
Фаяз
источник
3
Хорошо, но почему это происходит?
Gili
Из - за ошибки в msysgit: github.com/msysgit/msysgit/issues/153
Фаяз
Я получаю это сообщение в контейнере Docker, запущенном на gitlab. Базовое изображение есть python:3.7-slim. Так что это не связано с Windows.
Мартин Тома
В моем случае это была организация репо с использованием SSH: //git.gartner.com
Ankush
11

Для меня ничего не git pullполучилось из предложенного выше, я использую сценарий оболочки jenkins, и, по-видимому, он принимает неправильное имя пользователя. Я потратил много времени, прежде чем нашел способ исправить это без перехода на SSH.

В папке пользователя создать .gitconfig файл (если у вас его нет уже) и поставить свои учетные данные в следующем формате: https://user:pass@example.com, больше информации . После ссылки на ваш файл .gitconfig на эти учетные данные в моем случае это было:

[credential] helper = store --file /Users/admin/.git-credentials

Теперь git всегда будет использовать эти учетные данные, несмотря ни на что. Надеюсь, это кому-то поможет, вроде помогло мне.

Катя
источник
для меня это работало только тогда , когда я положил [credential] helper = store --file /..../.git-credentialsв .git/configв моем рабочем каталоге
Кирилл Oficerov
11

Обратите внимание: если вместо этого вы получаете эту ошибку:

fatal: could not read Username for 'https://github.com': No error

Затем вам нужно обновить Git до версии 2.16или более поздней.

Росди Касым
источник
7

Я нашел здесь свой ответ :

отредактируйте ~/.gitconfigи добавьте следующее:

[url "git@github.com:"]
 insteadOf = https://github.com/

Хотя он решает другую проблему, код ошибки тот же ...

Луи Паркин
источник
6

Если вы хотите продолжить, используйте https вместо ssh и не вводите свое имя пользователя и пароль из соображений безопасности.

Вы также можете попробовать токен Github OAuth , тогда вы можете сделать git config remote.origin.url 'https://{token}@github.com/{username}/{project}.git' или git remote add origin 'https://{token}@github.com/{username}/{project}.git'

У меня это работает!

спиральная луна
источник
4

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

$ git clone -v http://github.com/username/repo-name.git
Cloning into 'repo-name'...
Username for 'https://github.com': 
Password for 'https://github.com': 
remote: Repository not found.
fatal: Authentication failed for 'https://github.com/username/repo-name.git/'

На самом деле это произошло внутри Emacs, поэтому ошибка в Emacs выглядела так:

fatal: could not read Username for ’https://github.com’: No such device or address

Поэтому вместо полезной ошибки о том, что такого репо по этому URL-адресу нет, он дал мне это, отправив меня в погоню за дикими гусями, пока я, наконец, не понял, что URL-адрес неверен.

Это с git версии 2.7.4.

Я публикую это здесь, потому что это случилось со мной месяц назад и снова только сейчас, снова отправляя меня в ту же погоню за дикими гусями. > :(


источник
3

Короткий ответ:

git init
git add README.md
git commit -m "first commit"


git remote add origin https://github.com/{USER_NAME}/{REPOSITORY_NAME}.git
git push --set-upstream origin master

Игнорируйте первые три строки, если это не новый репозиторий.

Более подробное описание:

У меня была такая же проблема, поскольку ни один из приведенных выше ответов мне не помог, я решил опубликовать это решение, которое сработало для меня.

Несколько заметок:

  • Ключ SSH был сгенерирован
  • Ключ SSH был добавлен в github, ошибка все еще была.
  • Я создал новый репозиторий на GitHub для этого проекта и выполнил описанные шаги.

В качестве инструмента командной строки я использовал GitShell (для Windows я использую Terminal.app на Mac).
GitShell - официальный инструмент GitHub, его можно загрузить с https://windows.github.com/.

Надеюсь, это поможет всем, у кого такая же проблема.

Творческая магия
источник
2

Я исправил это, установив более новую версию Git. Я установил версию 2.10.2 с https://git-scm.com . См. Последний пост здесь: https://www.bountysource.com/issues/31602800-git-fails-to-authenticate-access-to-private-repository-over-https

В более новой версии Git Bash появляется окно диспетчера учетных данных, и вы можете ввести свое имя пользователя и пароль, и оно работает!

Дэвид Бурсон
источник
1

Это проблема с вашими учетными данными, хранящимися в системном кеше учетных данных. Вероятно, у вас есть конфигурационная переменная credential.helper, установленная на wincred или winstore, и ее не удается очистить. Если вы запустите панель управления и запустите апплет Credential Manager, найдите элементы в разделе общих учетных данных с надписью «git: https://github.com ». Если вы удалите их, в следующий раз они будут созданы заново, но вспомогательная утилита учетных данных запросит у вас новые учетные данные.

патойц
источник
о каком инструменте вы имеете в виду, в настоящее время я использую Bash для Windows
noobie-php
да - так что загляните в апплет панели управления Credential Manager. Если там нет ничего из упомянутого, проверьте свою конфигурацию - git config --global -l | grep credential. Если есть какие-то выходные данные, это будет утилита, которая пытается передать ваши сохраненные учетные данные на сервер при нажатии.
patthoyts 03
1
Mate я думаю , что это не будет проблема , дай мне объяснить, может быть , вы получите то , что я пытаюсь сказать, который привязан на ссылку мерзавца репо неприятности, я не думаю , что мое собственное имя пользователь делает проблемы здесь. Насколько мне известно, Credential manger помогает управлять личными учетными данными, а не учетными данными репозитория. git remote add origin https://github.com/username/Hello-World.gitusername
noobie-php
1

Замените удаленный URL следующим образом:

git remote set-url origin https://<username>@github.com/<username>/<repo>.git
GrossesKinoZuerich
источник
1
Во всех других сообщениях указывается, что пароль указывается в удаленном URL-адресе, который затем будет сохранен в виде обычного текста на диске - безопасности нет. Требуется только имя пользователя, хранилище учетных данных запросит ваше имя пользователя / пароль github, а затем сохранит его в безопасном месте для автоматического использования.
Bae
1

TL; DR: проверьте, можете ли вы читать / писать в /dev/tty. Если нет, и вы использовали suдля открытия оболочки, проверьте, правильно ли вы ее использовали.

Я столкнулся с той же проблемой, но в Linux, и я нашел проблему. У меня нет сохраненных учетных данных, поэтому я всегда ввожу их по запросу:

Username for 'https://github.com': foo
Password for 'https://foo@github.com': 

Как git обрабатывает http (s) соединения, /usr/lib/git-core/git-remote-https вы можете увидеть здесь:

stat("/usr/lib/git-core/git-remote-https", {st_mode=S_IFREG|0755, st_size=1366784, ...}) = 0
pipe([9, 10])                           = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f65398bb350) = 18177
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
close(10)                               = 0
read(9, "", 8)                          = 0
close(9)                                = 0
close(5)                                = 0
close(8)                                = 0
dup(7)                                  = 5
fcntl(5, F_GETFL)                       = 0 (flags O_RDONLY)
write(6, "capabilities\n", 13)          = 13
fstat(5, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
read(5, "fetch\noption\npush\ncheck-connecti"..., 4096) = 38
write(6, "option progress true\n", 21)  = 21
read(5, "ok\n", 4096)                   = 3
write(6, "option verbosity 1\n", 19)    = 19
read(5, "ok\n", 4096)                   = 3
stat(".git/packed-refs", {st_mode=S_IFREG|0664, st_size=675, ...}) = 0
lstat(".git/objects/10/52401742a2e9a3e8bf068b115c3818180bf19e", {st_mode=S_IFREG|0444, st_size=179, ...}) = 0
lstat(".git/objects/4e/35fa16cf8f2676600f56e9ba78cf730adc706e", {st_mode=S_IFREG|0444, st_size=178, ...}) = 0
dup(7)                                  = 8
fcntl(8, F_GETFL)                       = 0 (flags O_RDONLY)
close(8)                                = 0
write(6, "list for-push\n", 14)         = 14
read(5, fatal: could not read Username for 'https://github.com': No such device or address
"", 4096)                       = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=18177, si_uid=1000, si_status=128, si_utime=6, si_stime=2} ---
exit_group(128)                         = ?
+++ exited with 128 +++

Поэтому я попытался назвать это напрямую:

echo "list for-push" | strace /usr/lib/git-core/git-remote-https my

и результат:

poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 1 ([{fd=3, revents=POLLIN|POLLRDNORM}])
recvfrom(3, "\27\3\3\1\32", 5, 0, NULL, NULL) = 5
recvfrom(3, "\307|4Q\21\306\334\244o\237-\230\255\336\25\215D\257\227\274\r\330\314U\5\17\217T\274\262M\223"..., 282, 0, NULL, NULL) = 282
openat(AT_FDCWD, "/dev/tty", O_RDONLY)  = -1 ENXIO (No such device or address)
openat(AT_FDCWD, "/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=2995, ...}) = 0
read(4, "# Locale name alias data base.\n#"..., 4096) = 2995
read(4, "", 4096)                       = 0
close(4)                                = 0
openat(AT_FDCWD, "/usr/share/locale/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, "fatal: could not read Username f"..., 83fatal: could not read Username for 'https://github.com': No such device or address
) = 83
exit_group(128)                         = ?
+++ exited with 128 +++

И вот оно пришло ко мне:

openat(AT_FDCWD, "/dev/tty", O_RDONLY)  = -1 ENXIO (No such device or address)
...
write(2, "fatal: could not read Username f"..., 83fatal: could not read Username for 'https://github.com': No such device or address
) = 83

git-remote-httpsпытается прочитать учетные данные через, /dev/ttyпоэтому я проверил, работает ли это:

$ echo ahoj > /dev/tty
bash: /dev/tty: No such device or address

Но в другом терминале:

# echo ahoj > /dev/tty
ahoj

Я знал, что переключился на этого пользователя, suпоэтому я вышел из оболочки, чтобы посмотреть, как и узнал, что использую команду, su danman -поэтому снова протестировал ее:

~# su danman -
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
/root$ echo ahoj > /dev/tty
bash: /dev/tty: No such device or address

Я, вероятно, проигнорировал сообщение и продолжил работу, но это было причиной. Когда я переключился на правильный, su - danmanвсе работало нормально:

~# su - danman
danman@speedy:~$ echo ahoj > /dev/tty
ahoj

После этого git начал работать правильно

данман
источник
1

Для тех, кто получает эту ошибку в конвейере Jenkins, ее можно исправить с помощью подключаемого модуля SSH Agent . Затем оберните свои команды git примерно так:

sshagent(['my-ssh-key']) {
    git remote set-url origin git@github.com:username/reponame.git
    sh 'git push origin branch_name'
}
Нагев
источник
0

пробуя решение CreativeMagic, проблема с учетными данными подтверждается:

подскажите >>> Имя пользователя для « https://github.com »

Итак, я изменил свой исходный URL на

git remote set-url --add origin http://github.com/user/repo

а также

git push --set-upstream origin master
Tuxun
источник
0

Попробуйте использовать обычную оболочку Windows, например CMD.

Vajiheh habibi
источник
0

Ранее, когда мне не было предоставлено разрешение на доступ к репо, я также добавил ключ SSH pubkey в gitlab. В тот момент я мог получить доступ к репо и запустить поставщик модов, та же проблема, что и у вас. (возможно из-за кеша)

go mod vendor

go: errors parsing go.mod:
/Users/macos/Documents/sample/go.mod:22: git ls-remote -q https://git.aaa.team/core/some_repo.git in /Users/macos/go/pkg/mod/cache/vcs/a94d20a18fd56245f5d0f9f1601688930cad7046e55dd453b82e959b12d78369: exit status 128:
    fatal: could not read Username for 'https://git.aaa.team': terminal prompts disabled

После некоторой попытки я решил удалить ключ SSH и подсказки терминала для ввода имени пользователя и пароля. Тогда все нормально!

Лонг Тран
источник
0

Что сработало для меня, так это изменить доступ к репозиторию Git с частного на публичный.

Капил Гарг
источник