2013-02-23 20 views
20

Có cách nào để sử dụng xác thực dựa trên ssh khi truy cập API GitHub thông qua dòng lệnh (thông qua, ví dụ: curl, v.v.) không.Làm thế nào để sử dụng xác thực ssh với API github?

FWIW, tôi đã cố gắng rất nhiều biến thể của (cách khác nhau tôi đã chỉ định ssh công cộng của tôi key file) sau nhưng trong mọi trường hợp tôi vẫn còn nhắc nhở cho mật khẩu của tôi:

% curl --pubkey ~/.ssh/id_rsa.pub --user yrstruly https://api.github.com/user/repos 

Trả lời

7

Nếu bạn đang sử dụng ssh, thì bạn sẽ không bao giờ đăng nhập là 'yrstruly'. Bạn sẽ luôn kết nối như 'git'.
Khóa công khai của bạn sẽ đủ để GitHub nhận ra bạn là 'yrstruly'.
Và vì bạn đang sử dụng địa chỉ https và không phải là địa chỉ ssh, nên có thể bỏ qua tùy chọn --pubkey.

Địa chỉ ssh hợp lệ sẽ là: ssh://[email protected] và tôi không nghĩ Github đề xuất loại quyền truy cập đó cho api của nó.

Các curl --user option sẽ là cần thiết cho https chỉ giải quyết, như trong "Having trouble downloading Git archive tarballs from Private Repo":

curl -sL --user "${username}:${password}" https://github.com... 
+0

Về điểm cuối cùng của bạn, có một tấn các lệnh trong API GitHub rằng sửa đổi một repo, cũng cho đó xác thực sẽ rõ ràng là cần thiết. Hơn nữa, xác thực sang một bên, ít nhất một số lệnh này * không thể hoạt động * mà không có tham số '-u' vì chúng không rõ ràng. Ví dụ. nơi 'curl -u yrstruly -d '{" name ":" newrepo "}' https: // api.github.com/user/repos' tạo repo mới" newrepo "nếu tham số' -u' không được chỉ định? – kjo

+0

@kjo Tôi đồng ý, -u là cần thiết và đó là những gì tôi sử dụng trong câu trả lời của tôi (với tên người dùng và mật khẩu). Tuy nhiên, tôi sẽ không sử dụng bất kỳ pubkey, kể từ khi ssh không được tham gia ở đây. – VonC