2011-11-01 11 views
34

Ok, tôi đang bối rối về điều gì đó ... Tôi có thể cam kết kho github của tôi tốt, nhưng khi tôi cố gắng để làm một cap deploy từ thư mục địa phương của tôi để dàn máy chủ của tôi, tôi có được Permission denied (publickey).Tại sao nắp triển khai cho phép bị từ chối (khóa công khai)?

Nếu tôi chạy ssh [email protected] Tôi thực sự gặp lỗi PTY allocation request failed on channel 0

Vì vậy, điều gì đó ở đây sai.

Nếu tôi chạy ssh -vT [email protected] tôi nhận được:

OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011 
debug1: Reading configuration data /Users/myuser/.ssh/config 
debug1: Reading configuration data /etc/ssh_config 
debug1: Applying options for * 
debug1: Connecting to github.com [207.97.227.239] port 22. 
debug1: Connection established. 
debug1: identity file /Users/myuser/.ssh/id_rsa type 1 
debug1: identity file /Users/myuser/.ssh/id_rsa-cert type -1 
debug1: identity file /Users/myuser/.ssh/id_dsa type -1 
debug1: identity file /Users/myuser/.ssh/id_dsa-cert type -1 
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian-5github2 
debug1: match: OpenSSH_5.1p1 Debian-5github2 pat OpenSSH* 
debug1: Enabling compatibility mode for protocol 2.0 
debug1: Local version string SSH-2.0-OpenSSH_5.6 
debug1: SSH2_MSG_KEXINIT sent 
debug1: SSH2_MSG_KEXINIT received 
debug1: kex: server->client aes128-ctr hmac-md5 none 
debug1: kex: client->server aes128-ctr hmac-md5 none 
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent 
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP 
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent 
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY 
debug1: Host 'github.com' is known and matches the RSA host key. 
debug1: Found key in /Users/myuser/.ssh/known_hosts:2 
debug1: ssh_rsa_verify: signature correct 
debug1: SSH2_MSG_NEWKEYS sent 
debug1: expecting SSH2_MSG_NEWKEYS 
debug1: SSH2_MSG_NEWKEYS received 
debug1: Roaming not allowed by server 
debug1: SSH2_MSG_SERVICE_REQUEST sent 
debug1: SSH2_MSG_SERVICE_ACCEPT received 
debug1: Authentications that can continue: publickey 
debug1: Next authentication method: publickey 
debug1: Offering RSA public key: /Users/myuser/.ssh/github_rsa 
debug1: Remote: Forced command: gerve technomad 
debug1: Remote: Port forwarding disabled. 
debug1: Remote: X11 forwarding disabled. 
debug1: Remote: Agent forwarding disabled. 
debug1: Remote: Pty allocation disabled. 
debug1: Server accepts key: pkalg ssh-rsa blen 279 
debug1: Remote: Forced command: gerve technomad 
debug1: Remote: Port forwarding disabled. 
debug1: Remote: X11 forwarding disabled. 
debug1: Remote: Agent forwarding disabled. 
debug1: Remote: Pty allocation disabled. 
debug1: Authentication succeeded (publickey). 
Authenticated to github.com ([207.97.227.239]:22). 
debug1: channel 0: new [client-session] 
debug1: Requesting [email protected] 
debug1: Entering interactive session. 
debug1: Sending environment. 
debug1: Sending env LANG = en_US.UTF-8 
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 
debug1: client_input_channel_req: channel 0 rtype [email protected] reply 0 
Hi technomad! You've successfully authenticated, but GitHub does not provide shell access. 
debug1: channel 0: free: client-session, nchannels 1 
Transferred: sent 2384, received 2888 bytes, in 0.1 seconds 
Bytes per second: sent 42630.8, received 51643.3 
debug1: Exit status 1 

phím của tôi là trong thư mục ~/.ssh, để whats vấn đề này, và tại sao tôi có thể cam kết vào kho nếu có một vấn đề quan trọng ??

CẬP NHẬT: Tôi đã nhận thấy điều gì đó khi tôi truy cập thư mục .ssh của mình. Có một cặp khóa mới được tạo ra khi tôi cài đặt Github cho Mac ... tại sao nó không thể sử dụng cặp khóa hiện tại của tôi mà tôi không biết.

Trả lời

17

Tôi sẽ đảm bảo máy chủ dàn xếp của bạn có quyền truy cập ssh vào github. Chạy lệnh tương tự "ssh -vT [email protected]" thông qua một thiết bị đầu cuối trên máy chủ dàn dựng của bạn; điều này sẽ giúp xác định nếu nó là vấn đề ssh trên máy từ xa.

+0

Đó làm việc nhờ :), tôi đã nhìn ra một phần đó. Nhưng tôi vẫn không biết tại sao "ssh [email protected]" trả lại "yêu cầu phân bổ PTY không thành công trên kênh 0"? – GiH

+0

Bạn có thể ssh tới các máy chủ khác mà không gặp vấn đề gì? –

+0

yup, khi tôi ssh vào máy chủ của tôi nó hoạt động tốt, chỉ "ssh [email protected]" của nó, thực sự nếu tôi làm "ssh -T [email protected]" nó hoạt động tốt quá ... vậy tại sao không nó hoạt động mà không có tùy chọn -T? Nó có thể là một vấn đề với sư tử Mac OSX? – GiH

2

Tôi đã gặp vấn đề tương tự sau khi cài đặt GitHub cho Mac OS X. Ứng dụng đã tạo khóa riêng ssh mới trong ~/.ssh/github_rsa và thêm nó vào tác nhân xác thực ssh.

Kiểm tra mà chính các đại lý auth ssh đã cache:

$ ssh-add -l 
2048 63:0c:a6:51:63:c1:35:76:5d:02:77:97:39:48:0e:4a /Users/jiangxin/.ssh/github_rsa (RSA) 

Bất cứ khi nào bạn kết nối với github.com hoặc dịch vụ ssh khác, phím này được sử dụng đầu tiên.

Xóa phím cache từ ssh-agent sử dụng lệnh này:

$ ssh-add -D 

Bây giờ khách hàng ssh nên làm việc bình thường, sử dụng phím định nghĩa trong ~/.ssh/config hoặc ~/.ssh/id_rsa.

95

tôi phải làm như sau:

$ ssh-add -D #remove existing identities 
    $ ssh-agent #copy the lines & run them 
    $ ssh-add  #uses the output from above 
+3

Chạy lệnh này trên máy cục bộ của bạn – Hossein

+1

Đây là câu trả lời chính xác cho vấn đề. Không cần phải thêm khóa ssh trên máy tính sân khấu của bạn. Chỉ cần chạy trên lệnh và thực hiện ... Cảm ơn @olore –

+13

Nhưng lý do đằng sau này là gì, và những gì lệnh này đã làm để giải quyết này? –

0

Lỗi này là bởi vì, ssh-add không biết làm thế nào để nói chuyện với các đại lý xác thực. Sự cố có thể được giải quyết bằng cách đặt biến môi trường SSH_AUTH_SOCK.

Nếu bạn chạy ssh-agent bạn sẽ nhận được một số kết quả như thế này:

SSH_AUTH_SOCK=/tmp/ssh-agVZL13989/agent.13989; export SSH_AUTH_SOCK; 
SSH_AGENT_PID=13990; export SSH_AGENT_PID; 
echo Agent pid 13990;SSH_AUTH_SOCK=/tmp/ssh-agVZL13989/agent.13989; export SSH_AUTH_SOCK; 
SSH_AGENT_PID=13990; export SSH_AGENT_PID; 
echo Agent pid 13990; 

Execute này:

eval $(ssh-agent) 

Và sau đó:

ssh-add -D 
+0

Kính gửi Sankalp, câu trả lời của bạn rất ngắn và nên cung cấp một số thông tin bổ sung để tránh bị xóa (nó đã bị gắn cờ do người dùng khác xóa) – furins

+1

Cảm ơn bạn @furins .. Tôi sẽ viết một số thông tin. –

+0

tại sao 'ssh-add -D'? Đây chỉ là xóa danh tính của bạn. Đừng nghĩ rằng nó sẽ giúp giải quyết vấn đề. –

20

tôi nhận được lỗi này đôi khi và tôi chỉ cần nhập $ ssh-add -k để thêm danh tính của tôi và sau đó nó hoạt động. Không chắc chắn chính xác lý do tại sao tính năng này hoạt động hoặc tại sao thông báo lỗi không đề xuất, nhưng nó luôn đi kèm để giải cứu!

1

Nếu bạn đang sử dụng MAC. Có thể khóa ssh của bạn không được thêm vào tác nhân xác thực. Lệnh sau sẽ làm điều đó

ssh-add path_to_private_key 

ví dụ

ssh-add ~/.ssh/id_rsa