Nhấn vào GitHub mà không cần mật khẩu bằng ssh-key


215

Tôi đã tạo một cặp khóa SSH không có mật khẩu và thêm khóa công khai vào GitHub.

Kết nối với

user@dev:/var/www/project# ssh -T git@github.com
Hi User! You've successfully authenticated, but GitHub does not provide shell access.

đã thành công và khi tôi đổi tên khóa, nó thất bại.

Nhưng khi tôi muốn thay đổi, tôi vẫn hỏi tôi về tên người dùng và mật khẩu kết hợp.

Có cách nào để đẩy mà không cần mật khẩu?


9
Hãy chắc chắn rằng bạn không sử dụng https://github...trong điều khiển từ xa của bạn. Họ cũng nên theo git@github...định dạng.
cjc343

Câu trả lời:


419

Nếu nó hỏi bạn tên người dùng và mật khẩu, điều khiển từ xa gốc của bạn đang trỏ đến URL HTTPS chứ không phải URL SSH.

Thay đổi nó thành ssh.

Ví dụ: dự án GitHub như Git sẽ có URL HTTPS:

https://github.com/<Username>/<Project>.git

Và một SSH:

git@github.com:<Username>/<Project>.git

Bạn có thể làm:

git remote set-url origin git@github.com:<Username>/<Project>.git

để thay đổi URL.


4
Điều này đã giải quyết nó, nhưng tôi cứ tự hỏi tại sao Github sau đó sẽ khuyên bạn chỉ điểm cuối từ xa của kho lưu trữ mới tới một URL http. Tôi vừa tạo một kho lưu trữ từ đầu và tôi được cung cấp một tùy chọn để đặt URL từ xa https, không phải là một git.
Preslav Rachev

2
Đây là lệnh shell one-liner nhanh sẽ tự động thay đổi url https của bạn thành git one thích hợp (Chỉ hoạt động với 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:/')
Christopher Shroba

11

Ngoài ra đối với các ý chính, có vẻ như bạn phải bỏ tên người dùng

git remote set-url origin git@gist.github.com:<Project code>

10

Trong trường hợp bạn thực sự đang sử dụng URL SSH, nhưng vẫn được yêu cầu tên người dùng và mật khẩu khi git đẩy:

git remote set-url origin git@github.com:<Username>/<Project>.git

Bạn nên thử khắc phục sự cố với:

ssh -vT git@github.com

Dưới đây là một phần của đầu ra mẫu:

...
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).

Tôi thực sự đã thêm khóa công khai vào GitHub trước đây và tôi cũng có khóa riêng ở địa phương. Tuy nhiên, khóa riêng của tôi có tên khác /c/Users/Yuci/.ssh/github_rsa.

Theo kết quả đầu ra mẫu, Git đang thử /c/Users/Yuci/.ssh/id_rsa, điều mà tôi không có. Vì vậy, tôi chỉ đơn giản là có thể sao chép github_rsavào id_rsatrong cùng thư mục.

cp /c/Users/Yuci/.ssh/github_rsa /c/Users/Yuci/.ssh/id_rsa

Bây giờ khi tôi chạy ssh -vT git@github.comlại, tôi có:

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

Và bây giờ tôi có thể đẩy sang GitHub mà không bị yêu cầu tên người dùng và mật khẩu :-)


5

Bạn phải sử dụng phiên bản SSH , không phải HTTPS . Khi bạn sao chép từ kho lưu trữ, hãy sao chép liên kết bằng SSH phiên bản , vì SSH rất dễ sử dụng và giải quyết tất cả các vấn đề với quyền truy cập. Bạn có thể đặt quyền truy cập cho mọi SSH bạn nhập vào tài khoản của mình (như đẩy, kéo, sao chép, v.v.)

Đây là một liên kết, cho biết lý do tại sao chúng ta cần SSH và cách sử dụng nó: từng bước

Git Tạo khóa SSH


0

Như thường lệ, tạo khóa SSH và dán khóa chung vào GitHub. Thêm khóa riêng vào ssh-agent. (Tôi cho rằng đây là những gì bạn đã làm.)

Để kiểm tra mọi thứ là chính xác, sử dụng ssh -T git@github.com

Tiếp theo, đừng quên sửa đổi điểm từ xa như sau:

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

-4

Sử dụng dòng lệnh:

Nhập ls -al ~/.sshđể xem các khóa SSH hiện có.

Trong thiết bị đầu cuối được hiển thị: Không có thư mục tồn tại

Sau đó tạo khóa SSH mới

Bước 1.

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

bước 2.

Enter a file in which to save the key (/Users/you/.ssh/id_rsa): <here is file name and enter the key>

bước 3.

Enter passphrase (empty for no passphrase): [Type a password]

Enter same passphrase again: [Type password again]

Xin lỗi, câu hỏi này không phải là về cách tạo khóa mà là thiết lập git để sử dụng khóa thay vì xác thực
Sebus
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.