Sao chép khóa ssh vào máy khác để tôi có thể sử dụng GitHub ở đó?


12

Tôi có một máy chủ từ xa. Tôi đã có thể ssh thành công trên máy chủ từ xa đó - khóa của tôi nằm ở authorized_keysmáy chủ từ xa.

Bây giờ tôi muốn kéo trực tiếp từ GitHub lên máy chủ từ xa đó. Nhưng tôi nhận được permission denied (publickey)khi tôi thử ssh -T git@github.comtrên máy chủ từ xa.

Tôi có nên sao chép id_rsa.pubtrực tiếp từ máy cục bộ của mình lên máy chủ từ xa không, hay điều đó có nguy hiểm không?

Nếu đây là câu trả lời, cách tốt nhất để làm điều đó là gì?

Hoặc tôi có nên tạo khóa công khai mới trên máy chủ từ xa và thêm khóa đó vào tài khoản github của mình không?

CẬP NHẬT:

Đây là đầu ra từ một ssh dài dòng:

~$ ssh -Tv git@github.com
OpenSSH_6.0p1 Debian-4+deb7u2, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to github.com [192.30.252.131] port 22.
debug1: Connection established.
debug1: identity file /home/richard/.ssh/id_rsa type -1
debug1: identity file /home/richard/.ssh/id_rsa-cert type -1
debug1: identity file /home/richard/.ssh/id_dsa type -1
debug1: identity file /home/richard/.ssh/id_dsa-cert type -1
debug1: identity file /home/richard/.ssh/id_ecdsa type -1
debug1: identity file /home/richard/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /home/richard/.ssh/known_hosts:1
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: Trying private key: /home/richard/.ssh/id_rsa
debug1: Trying private key: /home/richard/.ssh/id_dsa
debug1: Trying private key: /home/richard/.ssh/id_ecdsa
debug1: No more authentication

Tôi vừa thử thiết lập chuyển tiếp đại lý ssh, sử dụng địa chỉ IP của máy chủ của tôi: developer.github.com/guides/USE-ssh-agent-forwarding Nhưng tôi vẫn truy cập Permission denied (publickey)vào máy từ xa.
Richard

1
Có một tùy chọn dài dòng trên lệnh ssh, tôi nghĩ rằng nó có thể cho bạn biết những tệp chính nào nó thực sự đang thử, nó đã giúp tôi một vài lần.
Allman

Câu trả lời:


4

id_rsa.pubcó thể được sao chép bất cứ nơi nào mà không có bất kỳ nguy hiểm thực sự cho nó. Đây là khóa công khai của bạn và có nghĩa là cho những thứ như thế này. Đó là một nửa của một cặp khóa và chia sẻ nó với những nơi bạn muốn truy cập là cách bạn cho phép khóa riêng hoạt động.

Để cho phép đăng nhập từ xa, khóa công khai của bạn cần được liệt kê trong authorized_keys( authorized_keys2trên một số hệ thống). Một khóa trên mỗi dòng, ở định dạng này:

ssh-rsa AAAIHAVEREMOVEDTHEMAJORITYOFTHEKEYBECAUSEISEENONEEDTOPOSTTHATWALLOFTEXTHERE9yfRjxw== jarmund@jarmint

Để đạt được điều này, một khi bạn đã sao chép nó, chỉ cần thêm nó vào authorized_keystệp như thế này:cat id_rsa.pub >> ~/.ssh/authorized_keys

Hầu hết các hệ thống lành mạnh sẽ từ chối cho phép bạn sử dụng đăng nhập dựa trên khóa nếu .sshthư mục có quyền quá lỏng lẻo. Thư mục nên có 700, vì vậy nếu bạn vẫn gặp sự cố:chmod 700 ~/.ssh

Ngoài ra, các tệp trong .sshthư mục phải là 600:chmod 600 ~/.ssh


Chỉnh sửa 1:

Bản thân tệp id_rsa.pubkhông được yêu cầu trên máy chủ từ xa. Chỉ có nội dung, như là một phần của authorized_keys. Tôi khuyên bạn nên chạy ssh -vT git@github.comđể cho phép ghi nhật ký chi tiết, để bạn có thể thấy chính xác những quyền mà nó phàn nàn.

Chỉnh sửa 2:

Điều này có nghĩa là không có khóa nào được cung cấp khớp với những gì máy chủ từ xa có trong tệp. Những gì bạn muốn được nhìn thấy là một cái gì đó như thế này:

debug1: Offering RSA public key: /home/jarmund/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 535

Những điều cần kiểm tra:

  • Đảm bảo rằng một trong các khóa riêng là khóa khớp với khóa chung mà bạn đã thêm vào điều khiển từ xa authorized_keys
  • Đảm bảo rằng khóa khớp với tên người dùng bạn đang cố gắng đăng nhập (phải là phần cuối cùng của khóa chung)
  • Hãy thử đổi tên authorized_keysthànhauthorized_keys2

Cảm ơn. Khóa công khai của tôi được liệt kê ~/.ssh/authorized_keystrên máy chủ từ xa - Tôi đã thêm nó bằng cách sử dụng cat ~/.ssh/id_rsa.pub | ssh me@server "cat >> ~/.ssh/authorized_keys". Sau đó sshed đến điều khiển từ xa và chạy ~$ chmod 700 ~/.ssh$ chmod 600 ~/.ssh/authorized_keysvẫn nhận được Permission denied (publickey)khi tôi cố gắng ssh để github. Tôi có nên sao chép toàn bộ id_rsa.pubtập tin qua máy từ xa không?
Richard

@Richard Bạn không cần tập tin ở đó, không. Mặc dù tôi muốn giữ nó trong thư mục .ssh chỉ trong trường hợp tôi cần. Nhưng nó không bắt buộc, nó chỉ là thứ tôi làm. Tôi khuyên bạn nên chạy sshlệnh được mô tả trong câu hỏi của bạn với công -vtắc để xem chính xác ssh đang khiếu nại về quyền nào.
Jarmund

Cảm ơn đã chỉnh sửa 2. Tôi không chắc chắn cách thực hiện dấu đầu dòng đầu tiên - check that one of the private keys...- tôi nên làm gì ở đây?
Richard

Ở điểm 2, ý bạn là khóa phải khớp với tên người dùng GitHub của tôi? Nó không giống bất cứ thứ gì :)
Richard

Vấn đề là tôi có thể sử dụng cùng khóa công khai này để ssh đến và lấy từ GitHub từ máy cục bộ của mình, vậy nên GitHub phải nghĩ rằng nó ổn chứ ...?
Richard

2
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/richard/.ssh/id_rsa
debug1: Trying private key: /home/richard/.ssh/id_dsa
debug1: Trying private key: /home/richard/.ssh/id_ecdsa
debug1: No more authentication

Theo dấu vết gỡ lỗi của bạn, không có tệp nào trong số các tệp chính này thực sự tồn tại trên hệ thống cục bộ và ssh không thực sự cung cấp bất kỳ khóa nào cho máy chủ từ xa. Đảm bảo rằng khóa bạn muốn sử dụng thực sự tồn tại trên máy chủ lưu trữ nơi bạn đang chạy ssh và tệp có đúng tên. Nếu bạn muốn sử dụng một tệp chính không phải là một trong các tệp mặc định, bạn phải chỉ định nó trên dòng lệnh ssh:

ssh -i /path/to/some_key -Tv git@github.com

Tệp khóa không tồn tại trên máy chủ từ xa mà tôi đang cố gắng chuyển sang github, nhưng nó nằm trong authorized_keys. Điều này có đủ hay tôi cũng cần phải sao chép tệp chính ở đó?
Richard

1
authorized_keysdành cho các khóa công khai sẽ được chấp nhận cho các kết nối đến . Bạn cần một bản sao của tệp khóa riêng để tạo kết nối đi đến một máy chủ khác. Vì vậy, có, một trong những tệp chính đó (id_rsa, v.v.) phải có mặt trên máy chủ lưu trữ nơi bạn đang chạy ssh.
Kenster

Cờ -i đã giúp tôi giải quyết vấn đề! Tôi đã sao chép thư mục ssh sang một máy tính khác và đang cố sử dụng git từ xa, nhưng bị từ chối. Các -i đã cứu ngày!
pauljohn32

2

Máy chủ cần khóa riêng của bạn để xác thực với Github. Khóa công khai của bạn, như tên gọi của nó, được coi là công khai nên không thể đủ để xác thực.

Nếu bạn không cần sử dụng Github trên máy chủ từ xa mà không kết nối qua ssh, bạn nên sử dụng chuyển tiếp ssh-agent. Hướng dẫn cho điều đó có sẵn trên Github: https://developer.github.com/guides/USE-ssh-agent-forwarding/ .

Nếu không, bạn nên tạo một khóa mới và liên kết nó với tài khoản của bạn.


0

Bạn có thể trực tiếp đặt lệnh.

$ mèo ~ / .ssh / id_rsa.pub

nếu bạn đã có khóa ssh rồi thì nó sẽ hiển thị. Nếu không thì nó báo lỗi. Bạn cần thêm khóa mới.

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.