Fat: không thể đọc Tên người dùng cho 'https://github.com': Không có tệp hoặc thư mục như vậy


95

Tôi gặp sự cố sau khi cố gắng kéo mã bằng git Bash trên Windows:

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

Tôi đã cố gắng triển khai giải pháp được chấp nhận được cung cấp tại đây:

... nhưng vấn đề vẫn tồn tại. Sau khi thêm / xóa nguồn gốc, tôi vẫn gặp lỗi tương tự.


Bạn đã cấu hình Tên người dùng? git config --global user.name "Your Name Here"
Raul Andres

Tôi đã thử điều đó nhưng nó không đề cập đến tên người dùng git của tôi, tôi nghĩ rằng nó đang gây ra vấn đề cho tên người dùng của kho lưu trữ git mà tôi đang gọi ở đây.
noobie-php

Tôi tự hỏi nếu chuyển sang SSH như một giải pháp khắc phục sự cố? albertech.blogspot.com/2016/11/…
jar

Câu trả lời:


68

Làm theo các bước để thiết lập khóa SSH tại đây: https://help.github.com/articles/generating-ssh-keys

HOẶC LÀ

git remote add origin https://{username}:{password}@github.com/{username}/project.git

3
Tùy chọn thứ 2 không hoạt động vì tôi đã thêm 'origin github'. Tôi đã xóa nguồn gốc [git remote remove origin] và sau đó viết những gì có trong câu trả lời với tên người dùng và mật khẩu của tôi và nó hoạt động tốt.
P_Rein

9
thay vì xóa và tái thêm nguồn gốc bạn cũng chỉ có thể thay đổi URL sử dụnggit remote set-url origin https://{username}:{password}@github.com/...
Chris

10
Giải pháp @ Chris hoạt động nhưng nó sẽ lưu mật khẩu tài khoản github của người dùng và để cho nó được đọc bởi chỉ gõgit remote -v
Jefferson Silva

Lựa chọn của Chris phù hợp với tôi! Tôi đã theo dõi nó với Jefferson Silva và nó hoạt động tốt. Vẫn có một error: cannot spawn sh: No such file or directorytin nhắn ...
TheSciGuy

14

Tôi phải đối mặt với cùng một vấn đề. Sự cố này xảy ra khi tôi sao chép bằng URL HTTPS và sau đó cố gắng đẩy các thay đổi bằng Git Bash trên Windows bằng cách sử dụng:

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

Tuy nhiên, khi tôi sử dụng SSH URL để sao chép, sự cố này đã không xảy ra:

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

3
Được rồi, nhưng tại sao điều này lại xảy ra?
Gili


Tôi nhận được thông báo này trong vùng chứa Docker đang chạy trên gitlab. Hình ảnh cơ sở là python:3.7-slim. Vì vậy, nó không liên quan đến Windows.
Martin Thoma

Trong trường hợp của tôi, đó là một repo tổ chức sử dụng ssh: //git.gartner.com
Ankush

11

Lưu ý rằng nếu bạn gặp lỗi này thì thay vào đó:

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

Sau đó, bạn cần cập nhật Git của mình lên phiên bản 2.16hoặc mới hơn.


10

Đối với tôi, không có gì hoạt động từ đề xuất ở trên, tôi sử dụng git pulltừ jenkins shell script và rõ ràng nó có tên người dùng sai. Tôi đã dành nhiều thời gian trước khi tìm ra cách khắc phục nó mà không cần chuyển sang SSH.

Trong thư mục của bạn của người dùng tạo file .gitconfig (nếu bạn không có nó đã được) và đưa thông tin của bạn trong định dạng sau: https://user:pass@example.com, nhiều thông tin . Sau liên kết tệp .gitconfig của bạn đến các thông tin đăng nhập đó, trong trường hợp của tôi, đó là:

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

Bây giờ git sẽ luôn sử dụng những thông tin đăng nhập đó bất kể điều gì. Tôi hy vọng nó sẽ giúp ai đó, giống như nó đã giúp tôi.


đối với tôi nó chỉ làm việc khi tôi đặt [credential] helper = store --file /..../.git-credentials.git/configtrong thư mục làm việc của tôi
Kirill Oficerov

5

Tôi đã tìm thấy câu trả lời của mình ở đây :

chỉnh sửa ~/.gitconfigvà thêm những điều sau:

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

Mặc dù nó giải quyết một vấn đề khác nhau, nhưng mã lỗi vẫn giống nhau ...


4

Nếu bạn muốn tiếp tục sử dụng https thay vì ssh và tránh nhập tên người dùng và mật khẩu của bạn vì lý do bảo mật.

Bạn cũng có thể thử mã thông báo Github OAuth , sau đó bạn có thể làm git config remote.origin.url 'https://{token}@github.com/{username}/{project}.git' hoặc git remote add origin 'https://{token}@github.com/{username}/{project}.git'

Điều này làm việc cho tôi!


4

Lỗi này cũng có thể xảy ra khi cố gắng sao chép một URL HTTP không hợp lệ. Ví dụ: đây là lỗi tôi gặp phải khi cố gắng sao chép URL GitHub bị sai một vài ký tự:

$ 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/'

Tuy nhiên, nó thực sự xảy ra bên trong Emacs, vì vậy lỗi trong Emacs trông như thế này:

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

Vì vậy, thay vì một lỗi hữu ích nói rằng không có repo nào như vậy tại URL đó, nó đã cho tôi điều đó, đưa tôi vào cuộc truy đuổi ngỗng hoang cho đến khi cuối cùng tôi nhận ra rằng URL không chính xác.

Đây là với phiên bản git 2.7.4.

Tôi đăng bài này ở đây vì nó đã xảy ra với tôi một tháng trước và một lần nữa ngay bây giờ, lại khiến tôi phải rượt đuổi cùng một con ngỗng hoang. > :(


3

Câu trả lời ngắn:

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

Bỏ qua ba dòng đầu tiên nếu nó không phải là một kho mới.

Mô tả dài hơn:

Chỉ gặp vấn đề tương tự, vì không phải các câu trả lời ở trên đã giúp tôi, tôi đã quyết định đăng giải pháp này phù hợp với tôi.

Vài lưu ý:

  • Khóa SSH đã được tạo
  • Khóa SSH đã được thêm vào github, vẫn có lỗi này.
  • Tôi đã tạo một kho lưu trữ mới trên GitHub cho dự án này và làm theo các bước được mô tả

Là công cụ dòng lệnh tôi đã sử dụng GitShell (đối với Windows, tôi sử dụng Terminal.app trên Mac).
GitShell là công cụ GitHub chính thức, có thể được tải xuống từ https://windows.github.com/

Hy vọng điều này sẽ giúp cho bất kỳ ai có cùng vấn đề.


2

Tôi đã sửa lỗi này bằng cách cài đặt phiên bản Git mới hơn. Phiên bản tôi đã cài đặt là 2.10.2 từ https://git-scm.com . Xem bài cuối tại đây: https://www.bountysource.com/issues/31602800-git-fails-to-authenticate-access-to-private-repository-over-https

Với Git Bash mới hơn, cửa sổ trình quản lý thông tin đăng nhập sẽ bật lên và bạn có thể nhập tên người dùng và mật khẩu của mình và nó hoạt động!


1

Đây là sự cố với thông tin đăng nhập được lưu trữ của bạn trong bộ đệm ẩn thông tin xác thực hệ thống. Có thể bạn đã đặt biến cấu hình 'credential.helper' thành wincred hoặc winstore và nó không xóa được. Nếu bạn khởi động Bảng điều khiển và khởi chạy ứng dụng Trình quản lý thông tin xác thực thì hãy tìm các mục trong phần thông tin đăng nhập chung có nhãn "git: https://github.com ". Nếu bạn xóa chúng, thì lần sau sẽ được tạo lại nhưng tiện ích trợ giúp thông tin xác thực sẽ yêu cầu bạn cung cấp thông tin đăng nhập mới.


được công cụ gì bạn đề cập đến tôi hiện đang sử dụng Bash cho các cửa sổ
noobie-php

vâng - vì vậy hãy xem trong ứng dụng Bảng điều khiển Trình quản lý thông tin đăng nhập. Nếu không có gì ở đó như đã đề cập thì hãy kiểm tra cấu hình của bạn - git config --global -l | grep credential. Nếu có bất kỳ đầu ra nào, đó sẽ là tiện ích đang cố gắng cung cấp thông tin đăng nhập đã lưu trữ của bạn cho máy chủ khi bạn đẩy.
patthoyts

1
Mate tôi nghĩ rằng isnt này vấn đề cho tôi giải thích, có thể bạn sẽ có được những gì tôi đang cố gắng để nói, git remote add origin https://github.com/username/Hello-World.gitsự usernamemà được gắn vào liên kết repo git này đang thực hiện gặp khó khăn, tôi không nghĩ rằng tên riêng của tôi là làm cho rắc rối ở đây. Theo như tôi biết Trình quản lý thông tin xác thực giúp quản lý thông tin đăng nhập cá nhân, không phải thông tin đăng nhập của kho lưu trữ.
noobie-php

1

Thay thế url từ xa của bạn như thế này:

git remote set-url origin https://<username>@github.com/<username>/<repo>.git

Tất cả các bài đăng khác chỉ ra rằng đặt mật khẩu trong url từ xa, sau đó sẽ được lưu trữ văn bản thuần túy trên đĩa - một bảo mật không có. Chỉ có tên người dùng được yêu cầu, cửa hàng thông tin xác thực sẽ yêu cầu tên người dùng / mật khẩu github của bạn và sau đó lưu trữ an toàn để được sử dụng tự động.
Bae

1

TL; DR: kiểm tra xem bạn có thể đọc / ghi vào /dev/tty. Nếu không và bạn đã từng sumở vỏ, hãy kiểm tra xem bạn đã sử dụng đúng cách chưa.

Tôi đã gặp phải vấn đề tương tự nhưng trên Linux và tôi đã tìm thấy vấn đề. Tôi không có thông tin đăng nhập của mình được lưu trữ vì vậy tôi luôn nhập chúng khi được nhắc:

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

Cách git xử lý (các) kết nối http đang sử dụng, /usr/lib/git-core/git-remote-https bạn có thể xem tại đây:

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

Vì vậy, tôi đã cố gắng gọi nó trực tiếp:

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

và kết quả:

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

Và ở đây nó đến với tôi:

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-httpscố gắng đọc thông tin đăng nhập qua, /dev/ttyvì vậy tôi đã kiểm tra xem nó có hoạt động không:

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

Nhưng trong một thiết bị đầu cuối khác:

# echo ahoj > /dev/tty
ahoj

Tôi biết tôi đã chuyển sang người dùng này bằng cách sử dụng suvì vậy tôi đã thoát khỏi trình bao để xem cách thức và phát hiện ra tôi đã sử dụng lệnh su danman -vì vậy tôi đã kiểm tra lại:

~# 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

Tôi có lẽ đã bỏ qua tin nhắn và tiếp tục làm việc nhưng đây là lý do. Khi tôi chuyển sang sử dụng đúng, su - danmanmọi thứ đều hoạt động tốt:

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

Sau đó, git bắt đầu hoạt động bình thường


1

Đối với những người gặp lỗi này trong đường dẫn Jenkins, nó có thể được khắc phục bằng cách sử dụng plugin SSH Agent . Sau đó, bọc các lệnh git của bạn trong một cái gì đó như sau:

sshagent(['my-ssh-key']) {
    git remote set-url origin git@github.com:username/reponame.git
    sh 'git push origin branch_name'
}


0

Trước đó khi tôi không được cấp quyền truy cập repo, tôi cũng đã thêm SSH pubkey vào gitlab. Tại thời điểm tôi có thể truy cập nhà cung cấp repo và chạy go mod, vấn đề tương tự như của bạn xảy ra. (có thể do cache)

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

Sau một lúc cố gắng, tôi quyết định xóa khóa SSH và lời nhắc đầu cuối điền tên người dùng và mật khẩu. Mọi thứ đều ổn sau đó!


0

Tôi đã gặp vấn đề tương tự trong IntelliJ IDE và đối với tôi, không có gì hoạt động từ đề xuất ở trên. Điều làm việc cho tôi là thay đổi quyền truy cập của kho lưu trữ Git từ riêng tư sang công khai.


-1

đang thử giải pháp CreativeMagic, vấn đề thông tin xác thực được xác nhận:

nhắc >>> Tên người dùng cho ' https://github.com '

Vì vậy, tôi đã thay đổi url gốc của mình bằng

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

git push --set-upstream origin master

1
rằng tại sao tôi không bao giờ giúp đỡ mọi người
tuxun
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.