2010-10-02 26 views
36

Tôi không thể thấy đầu của mình tạo khóa ssh cho GitHub. Tôi đã làm việc khá lâu rồi nhưng tôi không thể tìm ra điều gì đã thay đổi. Tôi đã xóa các khóa SSH trước đó khỏi tài khoản GitHub của mình. Sau khi làm theo hướng dẫn nhiều lần để tạo khóa SSH (http://help.github.com/mac-key-setup) và thử nghiệm "ssh [email protected]" Tôi nhận được thông tin sau;Việc cần làm về "Yêu cầu phân bổ PTY không thành công trên kênh 0"

PTY allocation request failed on channel 0 ERROR: Hi...successfully authenticated...GitHub does not provide shell access...Connection to github.com closed.

Tôi đã xem lại troubleshooting guide và nhận thấy rằng thư mục ssh của tôi không có tệp cấu hình. Sau khi tạo nó, tôi không chắc chắn về cách thức hoặc cách nhập đường dẫn cục bộ trên dòng IdentityFile. Tôi thậm chí không chắc liệu điều này là cần thiết trong trường hợp của tôi?

If your github authentication information is different from your machine account information, you’ll need to modify your ssh configuration file.

Create or open the file at ~/.ssh/config Add the following lines:

Host github.com 
    User git 
    Hostname github.com 
    PreferredAuthentications publickey 
    IdentityFile [local path to private key half of github public key you provided] 

You may also need to update the permissions on your .ssh folder and its contents. The SSH application will ignore secret files that are too permissive.

$ chmod 700 ~/.ssh 
$ chmod 600 ~/.ssh/* 

Tôi cũng chạy ssh -v [email protected] kết quả có thể được nhìn thấy ở đây http://gist.github.com/607283 gì khác với những gì tôi có thể nói.

Bất kỳ ý tưởng nào tôi đang làm sai?

+23

Cảnh báo “Yêu cầu phân bổ PTY không thành công” vô hại khi sử dụng dòng lệnh * ssh * để đăng nhập vào dịch vụ không cung cấp truy cập tương tác bình thường. Git-over-SSH không cần dịch vụ SSH của tty và GitHub được định cấu hình để từ chối phân bổ một cho các kết nối đến. Bạn có thể nói * ssh * không yêu cầu tty bằng 'ssh -T git @ github.com'. Như thông báo tiếp theo cho biết, xác thực của bạn đang hoạt động tốt. Bạn có gặp vấn đề gì khi sử dụng Git để truy cập GitHub qua SSH không? –

+0

Cảm ơn Chris - lời giải thích tốt nhất mà tôi từng nghe. Tôi hiểu phần đầu tiên của bình luận của bạn. Tôi đoán vấn đề liên quan là khi tôi cố gắng tạo ra một kho lưu trữ mới và "git push origin master" tôi trả về "Error: Permission to [email protected]/myapp bị từ chối vào myusername. Fatal: kết thúc từ xa treo lên bất ngờ "Vì vậy, tôi không chắc chắn trong quá trình tôi đang thất bại ... Tôi nghĩ đó là chìa khóa ssh của tôi. Tôi có nên tiếp tục thử ssh -T [email protected] như bạn đã đề xuất không? – Shawn

+0

Chúng tôi thấy thông báo “được xác thực thành công”, vì vậy không cần tiếp tục thử trực tiếp * ssh * vào GitHub. Tôi đã đề cập đến tùy chọn '-T' để chứng minh rằng thông báo" phân bổ PTY "không biểu thị một lỗi cứng (bạn nhận được cùng một thông báo" được xác thực thành công "cho dù bạn chạy với' -T' hay không). Tôi sẽ viết thêm về vấn đề thực sự trong một câu trả lời. –

Trả lời

34

Như được mô tả trong các nhận xét về câu hỏi, "yêu cầu phân bổ PTY không thành công" là một cá trích đỏ liên quan đến xác thực GitHub (đó là kết quả của việc cố gắng đăng nhập tương tác vào GitHub khi dịch vụ SSH duy nhất họ cung cấp là không -kết nối Git-over-SSH, xác thực đang hoạt động, chúng chỉ không cung cấp dịch vụ “vỏ” tương tác).


Người hỏi những câu viết này trong một chú thích:

I guess the related problem is that when I try to create a new repository and "git push origin master" I return the following "Error: Permission to [email protected]/myapp denied to myusername. Fatal: the remote end hung up unexpectedly"

Điều này có vẻ nhiều khả năng là vấn đề thực tế. Điều này dường như chỉ ra rằng từ xa có tên origin không được cấu hình để trỏ đến một kho lưu trữ GitHub một cách chính xác.

Kiểm tra kết quả của git remote show -n origin. Có thể là "URL tìm nạp" và "URL đẩy" giống nhau. Cả hai đều sẽ giống như thế này:

[email protected]:git-user-name/repository-name 

Khi đăng nhập vào GitHub trên web mà bạn có thể sử dụng tên đăng nhập hoặc địa chỉ email liên quan của tài khoản của bạn. Khi đẩy vào kho (hoặc tìm nạp từ kho riêng), bạn phải sử dụng tên người dùng thực của bạn (địa chỉ email sẽ không hoạt động). Có vẻ như bạn đang sử dụng địa chỉ email của mình thay vì chỉ sử dụng tên người dùng GitHub của bạn. Để sửa lỗi này, cấu hình lại URL của từ xa:

git remote set-url origin [email protected]:github-username/repository-name 

Tên truy nhập của bạn sẽ được hiển thị ở nhiều nơi trên các trang web GitHub một khi bạn đã đăng nhập Nơi dễ nhất để tìm thấy nó nằm giữa gravatar của bạn và “Bảng điều khiển” liên kết. trên tiêu đề trang (bạn sẽ thấy biểu tượng hình bóng nếu bạn không có gravatar được định cấu hình). Cùng một vị trí đó liên kết với trang hồ sơ công khai của bạn; URL của trang này cũng sẽ kết thúc bằng tên người dùng của bạn.

+0

@ chris-johnsen Khi tôi vào đúng thư mục, tôi đã nhập "git remote set -url origin ... "theo hướng dẫn nhưng sự trở lại là" error: unknown subcommand: set-url "và cung cấp các lệnh thay thế cho git remote, không cái nào trong số đó có vẻ liên quan. Có thể thay vào đó tôi cần sử dụng "git config --global user.name myusername và git config --global user.email [email protected]"? – Shawn

+0

@Shawn: Ah, 'git remote set-url' chỉ có trong Git 1.7.0 trở lên. Chỉ cần thực hiện 'git config remote.origin.url '[email protected]: github-username/repository-name'' hoặc chỉnh sửa cấu hình với' git config -e' (1.6.3 và cao hơn, hoặc chỉ 'vim .git/config' ☺). Các giá trị 'user.name' và' user.email' chỉ được sử dụng khi thực hiện các cam kết, chứ không phải khi đẩy. –

+0

@ chris-johnsen Cảm ơn tất cả sự giúp đỡ và kiên nhẫn của bạn. Nền bạn cung cấp đã giúp làm sáng tỏ câu hỏi mà tôi không thể giao tiếp được. Dưới đây là những gì tôi nhận ra và sắp xếp ... 1) đã xóa kho gốc, 2.) Được nâng cấp lên phiên bản Git mới nhất, 3.) Cùng với các nhận xét của bạn, hướng dẫn RailsTutorial.org, tạo GitHub và GitHub Repository hướng dẫn tôi nhận ra tôi đã nhập sai tên người dùng khi tôi đã làm git config --global user.name "tên người dùng của tôi" và 4.) Cuối cùng có thể đẩy vào GitHub! Cảm ơn một lần nữa vì sự giúp đỡ của bạn! – Shawn

Các vấn đề liên quan