fatal: не вдалося прочитати ім'я користувача для "https://github.com": такого файлу чи каталогу немає


99

У мене є така проблема, коли я намагаюся витягнути код за допомогою git Bash у Windows:

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

Я вже намагався реалізувати прийняте рішення, наведене тут:

... але проблема зберігається. Після додавання / видалення джерела я все одно отримую ту ж помилку.


Ви налаштували ім'я користувача? git config --global user.name "Your Name Here"
Рауль Андрес

Я вже спробував це, але це не посилання на моє ім'я користувача git, я думаю, це створює проблему для імені користувача сховища git, яке я тут називаю.
noobie-php 03.03.14

Відповіді:


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

10
замість видалення та повторного додавання джерела ви також можете просто змінити URL-адресу, використовуючиgit remote set-url origin https://{username}:{password}@github.com/...
Кріс

10
Рішення @Chris працює, але воно зберігає пароль облікового запису github користувача і дає змогу його прочитати, просто набравшиgit remote -v
Jefferson Silva

Мені вдався варіант Кріса! Я продовжив це з Джефферсоном Сільвою, і це спрацювало добре. Все ще є 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
Гаразд, але чому це відбувається?
Гілі

Через помилку в 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 03.03.14

так - так що загляньте в аплет Панелі керування Credential Manager. Якщо там нічого немає, як згадувалося, перевірте конфігурацію - git config --global -l | grep credential. Якщо щось буде виведено, це буде утиліта, яка намагається подати ваші збережені облікові дані на сервер під час натискання.
patthoyts 03.03.14

1
Mate я думаю , що це не буде проблема , дай мені пояснити, може бути , ви отримаєте те , що я намагаюся сказати, який прив'язаний на посилання мерзотника репо неприємності, я не думаю , що моє власне ім'я користувач робить проблеми тут. Наскільки я знаю, менеджер облікових даних допомагає керувати особистими обліковими даними, а не обліковими даними сховища. 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

У всіх інших публікаціях вказується введення пароля у віддалену URL-адресу, яка потім буде зберігати звичайний текст на диску - безпека ні. Потрібно лише ім’я користувача, сховище облікових даних запитає ваше ім’я користувача / пароль github, а потім надійно збереже його для автоматичного використання.
Бае

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

2
ось чому я ніколи не допомагаю людям
tuxun


0

Раніше, коли мені не дали дозволу на доступ до репо, я також додав SSH pubkey до gitlab. На той момент я міг отримати доступ до репо і запустити постачальника go mod, та сама проблема, що і у вас. (можливо, через кеш)

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

У мене була та сама проблема в IntelliJ IDE, і для мене нічого не працювало із запропонованого вище. Мені вдалося змінити доступ до сховища Git з приватного на загальнодоступний.

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