Câu hỏi Cách dễ nhất để sao chép các khóa ssh sang một máy khác?


Tôi lười biếng ở nhà và sử dụng xác thực mật khẩu cho máy chủ của tôi. Tôi đã sẵn sàng chuyển sang xác thực dựa trên khóa. Có nhiều tùy chọn trên web về cách thực hiện việc này, bao gồm cả việc catting sau đó sshing phím trên, gõ phím qua trực tiếp, v.v ...

Tôi đang tìm cách dễ nhất và được đề nghị để sao chép một khóa hơn, hy vọng có một wrapper tiện lợi một nơi nào đó trong gói ssh Ubuntu?

Tôi đã biết cách tắt đăng nhập mật khẩu.


296
2017-09-27 20:24


gốc


askubuntu.com/questions/307881/… - Vineet


Các câu trả lời:


Các ssh-copy-id lệnh (trong openssh-client gói và được cài đặt theo mặc định) thực hiện chính xác điều này:

ssh-copy-id user@hostname.example.com

sao chép khóa công khai của danh tính mặc định của bạn (sử dụng -i identity_file để nhận dạng khác) cho máy chủ từ xa.

Danh tính mặc định là khóa ssh "chuẩn" của bạn. Nó bao gồm hai tệp (khóa công khai và khóa riêng) trong ~/.ssh thư mục, thường được đặt tên identity, id_rsa hoặc là id_dsa (và tương tự với .pub), tùy thuộc vào loại khóa. Nếu bạn không tạo nhiều hơn một khóa ssh, bạn không phải lo lắng về việc chỉ định danh tính, ssh-copy-id sẽ tự động chọn nó.

Trong trường hợp bạn không có danh tính, bạn có thể tạo một danh tính bằng công cụ ssh-keygen.

Ngoài ra, nếu máy chủ sử dụng cổng khác với cổng mặc định (22) bạn nên sử dụng dấu ngoặc kép theo cách này (nguồn):

ssh-copy-id "user@hostname.example.com -p <port-number>"

408
2017-09-27 21:01



Danh tính mặc định là gì? - Oxwivi
@Oxwivi: Danh tính mặc định là khóa ssh "chuẩn" của bạn. Nó bao gồm hai tệp (khóa công khai và khóa riêng) trong ~/.ssh thư mục, thường được đặt tên là `danh tính, id_rsa` hoặc id_dsa (và tương tự với .pub), tùy thuộc vào loại khóa. Nếu bạn không tạo nhiều hơn một khóa ssh, bạn không phải lo lắng về việc chỉ định tệp, ssh-copy-id sẽ tự động chọn nó. - Marcel Stimberg
để sử dụng cổng khác nhau này: ssh-copy-id "user@host -p 6842" - jibon57
Điều gì sẽ xảy ra nếu máy chủ từ xa mà bạn đang sao chép không cho phép lời nhắc mật khẩu và về cơ bản bị khóa lưu để truy cập SSH? - Cyle
Trên mac bạn có thể làm brew install ssh-copy-id và sau đó chạy lệnh. - Avishai


Tôi thích câu trả lời từ Marcel. Tôi không biết lệnh này. Tôi đã luôn sử dụng những gì tôi đã tìm thấy trên Trang web SUN:

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"'

Tôi đã nghĩ để đăng nó ở đây vẫn còn, bởi vì nó là một minh họa tốt về những gì có thể đạt được trong mã shell với sức mạnh của ssh. Nhưng sử dụng ssh-copy-id chắc chắn là một cách an toàn hơn để làm điều đó đúng cách!

Lưu ý rằng nếu thư mục .ssh không tồn tại, lệnh trên sẽ thất bại. Ngoài ra, nó có thể tốt hơn khi tạo tệp để đặt quyền tối thiểu có thể (về cơ bản chỉ đọc-ghi cho chủ sở hữu). Đây là một lệnh nâng cao hơn:

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'

113
2017-10-11 22:26



Lệnh chính xác này cũng hoạt động từ máy Mac - Mihai P.
Nó sẽ làm việc dưới bất kỳ Unix với hầu hết các shell. Tôi đã cập nhật bài đăng với lệnh được cập nhật trong trường hợp thư mục .ssh không tồn tại ở phía xa. - Huygens
Các cat không cần thiết - chuyển hướng đầu vào bình thường là đủ, ví dụ: < ~/.ssh/id_rsa.pub | ssh ... - maxschlepzig
@Huygens Cảm ơn. Hữu ích hơn khi nhớ điều này, bởi vì bạn không cần phải cài đặt bất cứ thứ gì và nó cũng có thể tốt cho việc thực hiện các lệnh nước ngoài, ví dụ: thay đổi quyền truy cập phía máy chủ như bạn đã minh họa trong ví dụ nâng cao của mình. - Jonathan Komar
Tôi thích cách này vì nó cho phép bạn sử dụng ssh tiết tấu, điều này rất hữu ích trong việc tìm ra lý do tại sao mọi thứ bị hỏng. sshcopyid chỉ đóng băng và không bao giờ làm việc, điều này đã hoàn hảo. - Sirens


Phương pháp đồ họa

  1. Mở Các ứng dụng ▸ Mật khẩu và khóa ▸ Khóa cá nhân của tôi.
  2. Chọn khóa của bạn và sau đó nhấp Xa ▸ Định cấu hình khóa cho Shell an toàn.

Set Up Computer for SSH Connection


25
2017-09-27 20:32



Tôi không có "Mật khẩu và khóa mã hóa" trong trình đơn của mình. - Jorge Castro
Bạn đang sử dụng bản phát hành Ubuntu nào? Trong Ubuntu 10.04 LTS, điều này sẽ có sẵn theo mặc định. - ændrük
10.10, chỉ cần thêm thẻ. Câu trả lời của Marcel là những gì tôi đang tìm kiếm, mặc dù +1 cho câu trả lời theo định hướng trên máy tính để bàn của bạn! - Jorge Castro
Chương trình này là seahorse. - Gilles
Tôi nghĩ rằng ứng dụng này nằm trong menu System-> Preferences trong 10.10 (không thể kiểm tra nó ngay bây giờ, tôi đang ở trên 10.04) - Huygens


Trên Ubuntu, bạn có thể lấy khóa từ Launchpad:

ssh-import-id [launchpad account name]

Chi tiết:

  1. Bạn cần tài khoản Launchpad đăng nhập hoặc tạo một tài khoản
  2. Sau khi đăng nhập, nhấp vào nút bên cạnh Khóa SSH:
  3. Dán nội dung của tệp khóa công khai của bạn vào trường đó (bao gồm cả nhận xét). Khóa như vậy trông giống như:

    ssh-rsa AAAAB3Nza .... UyDOFDqJp lekensteyn
    

    Đây, ssh-rsa cho biết khóa là khóa RSA, AAAAB3Nza .... UyDOFDqJp là khóa thực tế và lekensteyn là bình luận.

  4. Lưu khóa bằng cách nhấn Nhập khóa công khai
  5. Nếu mọi thứ suôn sẻ, khóa của bạn bây giờ sẽ được liệt kê dưới Khóa SSH:

Gói ssh-import-id cần được cài đặt trên máy cần truy cập từ xa. Gói này được cài đặt cùng với openssh-servergói vì đó là gói được đề xuất cho openssh-server. Sau khi đảm bảo rằng ssh-import-id đã được cài đặt Trên máy khách, hãy chạy:

ssh-import-id [launchpad account name]

Thao tác này sẽ tải xuống khóa công khai từ các máy chủ Launchpad qua HTTPS để bảo vệ bạn khỏi các cuộc tấn công MITM.

Trên Ubuntu Lucid và trước đó, bạn có thể thực hiện tương tự với:

wget https://launchpad.net/~[lp acount name]/+sshkeys -O - >> ~/.ssh/authorized_keys && echo >> ~/.ssh/authorized_keys

Các echo lệnh là cần thiết để có thêm một dòng mới sau dòng có khóa SSH.


18
2018-06-10 19:20





cho cổng tùy chỉnh

ssh-copy-id -i "user@hostname.example.com -p2222"

-i chuyển mặc định thành ~ / .ssh / id_rsa.pub, nếu bạn muốn một khóa khác, hãy đặt đường dẫn của khóa sau -i

CẢNH BÁO: Nếu bạn không viết -i nó sẽ sao chép tất cả các khóa của bạn được tìm thấy trong ~ / .ssh


12
2018-03-08 20:16



Bạn có chắc chắn về điều đó không? "-i identity_file - Chỉ sử dụng (các) khóa có trong identity_file (chứ không phải tìm kiếm thông tin nhận dạng qua ssh-add (1) hoặc trong default_ID_file). Nếu tên tệp không kết thúc bằng .pub thì được thêm vào. được bỏ qua, default_ID_file được sử dụng. " - Yousha Aleayoub