Làm cách nào để thêm vĩnh viễn danh tính cho SSH?


37

Tôi cần chạy ssh-add <key>mọi lúc tôi cần ssh vào máy chủ web. Có cách nào để thêm ID vĩnh viễn, vì vậy tôi không phải tiếp tục thêm danh tính trên mỗi lần đăng nhập?

EDIT: Khóa là tệp pem mà tôi đã tải xuống từ dịch vụ đám mây.

Câu trả lời:


40

Tạo khóa của bạn như bình thường : ssh-keygen, sau đó đặt khóa đó vào máy chủ từ xa ssh-copy-id, sẽ đồng bộ hóa nó với các khóa được chấp nhận của máy chủ từ xa.

ssh-keygen
ssh-copy-id user@host

Nó sẽ nhắc mật khẩu của bạn sau đó thực hiện tất cả các bước cần thiết để liên kết .pubkhóa của bạn với máy chủ SSH từ xa.

Theo mặc định, nó sẽ sao chép tất cả các khóa .pub của bạn vào máy chủ từ xa. Nếu bạn chỉ tạo khóa của mình ssh-keygenthì đây không phải là vấn đề (vì bạn chỉ có một!). Tuy nhiên, nếu bạn có nhiều khóa, bạn có thể sao chép chỉ một khóa cụ thể bằng -icờ.

ssh-copy-id -i ~.ssh/key_name.pub user@host

Thay thế key_name.pubbằng tên của chìa khóa.


4
Đối với một người như tôi (hoặc người hỏi câu hỏi) chỉ tiếp xúc với ssh đang sử dụng nó để truy cập các máy chủ được lưu trữ trên đám mây nơi dịch vụ web tạo khóa và đưa nó cho tôi (trong trường hợp của tôi, máy chủ AWS), câu trả lời này rất khó để hiểu mà không làm một số nghiên cứu nền tảng quan trọng. Tôi chưa bao giờ sử dụng ssh-keygenhoặc ssh-copy-id, ví dụ. Mặt khác, những câu trả lời như thế này hoàn toàn rõ ràng và hữu ích với tôi về trình độ hiểu biết của tôi. Tùy thuộc vào việc bạn có muốn điều chỉnh câu trả lời của mình theo bất kỳ cách nào để giúp những người thiếu hiểu biết như tôi không. :)
Đánh dấu Amery

Câu trả lời giả định rằng tôi muốn tạo một khóa mới. Điều gì xảy ra nếu tôi chỉ muốn đăng ký một khóa hiện có với khóa?
donquixote

@donquixote: xem câu trả lời dưới đây của người dùng626052.
ness101

7

Bạn có thể tạo khóa ssh bằng lệnh:

ssh-keygen

Sau đó, bạn có thể sao chép khóa của mình vào máy chủ bằng:

ssh serveruser@servername "echo `cat ~/.ssh/id_dsa.pub` >> ~/.ssh/authorized_keys" 

Bây giờ bạn có thể tự động đăng nhập vào máy chủ web của mình


1
Để sao chép khóa vào máy chủ có, bạn chỉ cần sử dụng ssh-copy-id -i ~/.ssh/id_dsa.pub serveruser@servernamehoặc ~/.ssh/id_rsa.pubtương ứng. Trên thực tế, nếu bạn sử dụng tên mặc định cho tệp chính, bạn thậm chí không phải chỉ định nó.
Carsten Thiel

5

đặt cái này vào ~/.bashrc

eval $(ssh-agent)
ssh-add ~/.ssh/where_ever_privake_key_is 

3
Đây là câu trả lời duy nhất mà thực tế trả lời câu hỏi. Những cái khác chỉ thêm khóa công khai mặc định vào một máy chủ mục tiêu, điều này gây khó chịu nếu bạn có hai + riêng biệt cho các bộ máy chủ khác nhau.
ness101

3

Nếu khóa của bạn không có mật khẩu và được đặt tên là một trong những tệp ssh sẽ cố gắng tìm kiếm khi xác định ( ~/.ssh/id_dsahoặc ~/.ssh/id_rsa), bạn không cần phải thêm nó vào đại lý của mình.

NHƯNG. Nếu có khả năng nhỏ nhất những tệp đó bị đánh cắp, bạn sẽ chỉ cho phép mọi người truy cập vào các máy chủ mà bạn đang sử dụng danh tính này. Trong ngắn hạn, pwned.

IMHO, khóa riêng không có mật khẩu là một thực tiễn xấu và chỉ nên được sử dụng trong các môi trường ~/.ssh/authorized_keysrất hạn chế.


1
ssh-agent có thể giữ khóa riêng được giải mã của bạn, trong khi bạn đăng nhập. Nếu được bật, khóa gnome thậm chí có thể sử dụng mật khẩu đăng nhập của bạn. Ồ, và ssh-copy-id cũng có thể sao chép khóa chung của bạn vào máy chủ.
Frank

2

Viết một tập lệnh shell ngắn sẽ chạy ssh-add và sau đó kết nối như sau:

ssh-add ~/.ssh/your-key
ssh user@remotehost

Sau đó bạn có thể ssh vào máy chủ của bạn với một lệnh.


1

Đối với AWS, tải xuống khóa pem và chạy:

ssh-add /path/to/pemfile.pem

Điều đó làm việc cho tôi, Ubuntu 18.04. Nguồn , không có gì khác là cần thiết.

NB : Tuy nhiên, điều quan trọng là phải đặt quyền thành 400 trước khi thực hiện việc này.

chmod 400 /path/to/pemfile.pem

Nếu không bạn sẽ gặp lỗi:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @
CẢNH BÁO: FILE CHÍNH HÃNG KHÔNG GIỚI HẠN! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@ Quyền 0664 cho '/home/toing_toing/blablabla.pem' quá mở. Người khác yêu cầu các tệp khóa riêng của bạn KHÔNG được truy cập bởi người khác. Khóa riêng này sẽ bị bỏ qua.


0
 ssh serveruser@servername "cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys" 

-2

Bạn đang nói về Amazon Cloud? Trong ~ / .bashrc của bạn, tạo các biến môi trường:

# Amazon
export EC2_PRIVATE_KEY=$HOME/Keys/pk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem
export EC2_CERT=$HOME/Keys/cert-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/

vâng, tôi nói về đám mây, nhưng đây là cặp khóa để ssh vào ví dụ và các biến môi trường ở trên là cần thiết để sử dụng các công cụ api :)
theTuxRacer

Được. Vì vậy, hãy tạo khóa RSA không có mật khẩu: 'ssh-keygen -t rsa' và sau đó ghép khóa công khai đã tạo (~ / .ssh / id_dsa.pub) vào tệp ~ / .ssh / ủy quyền của máy chủ từ xa. Một lớp lót để thực hiện điều này đã được đưa ra bởi nhiều ngườ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.