Làm thế nào để bạn tạo một khóa ssh cho người dùng khác?


89

Tôi đang cố gắng tạo khóa ssh cho người dùng khác. Tôi đang đăng nhập với quyền root. Tôi có thể chỉnh sửa các tệp được tạo bởi ssh-keygen và thay đổi root cho người dùng tôi muốn không?


5
Nếu bạn tạo khóa cho người dùng, bạn cũng phải có một phương pháp an toàn để lấy khóa riêng và nó chuyển cụm từ cho người dùng. Tốt hơn nhiều là người dùng tạo khóa và sau đó chỉ cần gửi email cho bạn khóa công khai.
dùng9517

Nhưng không khó lắm sao bạn không cho phép đăng nhập mật khẩu? Nếu tôi chỉ dùng khóa và tôi thiết lập người dùng mới, họ không thể đăng nhập để thiết lập khóa của họ.
LVLAaron

Câu trả lời:


79

ssh-keygenTuy nhiên, bạn có thể làm điều đó với khóa riêng tư có nghĩa là riêng tư đối với người dùng, vì vậy bạn nên cẩn thận để giữ an toàn - an toàn như mật khẩu của người dùng. Hoặc thậm chí an toàn hơn, vì người dùng không có khả năng được yêu cầu thay đổi nó khi đăng nhập lần đầu.

ssh-keygen -f anythingtạo hai tập tin trong thư mục hiện tại. anything.publà khóa chung mà bạn có thể thêm vào người dùng ~/.ssh/authorized_keystrên bất kỳ máy chủ đích nào.

Các tập tin khác, chỉ được gọi anythinglà khóa riêng và do đó nên được lưu trữ an toàn cho người dùng. Vị trí mặc định sẽ là ~username/.ssh/id_rsa(ở đây có tên id_rsa, được mặc định cho các khóa rsa). Hãy nhớ rằng .sshthư mục không thể được đọc hoặc ghi bởi bất kỳ ai trừ người dùng và thư mục chính của người dùng có thể được ghi bởi bất kỳ ai trừ người dùng. Tương tự, các quyền cũng phải được khóa chặt chẽ trên khóa riêng: Đọc / ghi chỉ cho người dùng và thư mục .ssh và keyfile phải được sở hữu bởi người dùng.

Về mặt kỹ thuật bạn có thể lưu trữ chìa khóa ở bất cứ đâu. Với ssh -i path/to/privatekeybạn có thể chỉ định vị trí đó, trong khi kết nối. Một lần nữa, quyền sở hữu và quyền thích hợp là rất quan trọng và ssh sẽ không hoạt động nếu bạn không có quyền.


4
+1 để thể hiện rằng đó là khóa riêng tư (!)
mailq

51
Bạn đang cho rằng người dùng là một người thực sự. Nếu đăng nhập là người dùng không tương tác được sử dụng để thực hiện các tác vụ tiện ích (ví dụ: chạy các tập lệnh maine trên máy chủ từ xa), thì có, bạn có thể sẽ tạo khóa cho người dùng đó theo cách thủ công. Tất nhiên, điều đó có ý nghĩa bảo mật riêng, nhưng đó là một câu chuyện khác.
Rilindo

2
@Rilindo ssh -iđến một khóa riêng cho một quy trình không có đặc quyền là cách tôi xử lý nhiều hơn một vài quy trình sao lưu rsync tự động. :)
Shadur

9
Tôi không thích kiểu trả lời đó nói rằng "bạn không nên làm thế" nhưng không trả lời câu hỏi. Mặc dù điều này có thể đúng và hữu ích cho bối cảnh của câu hỏi ban đầu, những người khác có thể có cùng một câu hỏi trong một tình huống khác. "Không bao giờ nên tạo khóa ssh cho người dùng khác": Điều đó đúng trong trường hợp đơn giản. Nhưng xem xét nhiều danh tính của cùng một người, ví dụ. Có thể có nhiều tài khoản trên nhiều hệ thống, không phải tất cả chúng đều cho phép bạn tạo khóa hoặc cho phép bảo vệ khóa riêng một cách thích hợp.
Gustave

usershoặcuser's
Người dùng

135

Không có thông tin người dùng trong các khóa SSH .

Trường cuối cùng trong khóa chung là một nhận xét (và có thể được thay đổi bằng cách chạy lệnh sau ssh-keygen -C newcomment).

Không cần phải làm gì đặc biệt để tạo khóa cho người dùng khác, chỉ cần đặt nó vào đúng vị trí và đặt quyền.


5
Đó là câu trả lời đúng.
sebnukem

1
Tôi chỉ kiểm tra và xác nhận, nó không chỉ là một bình luận, mà nó có thể được gỡ bỏ và các phím vẫn hoạt động. Tôi luôn nghĩ rằng nó quan trọng! Cảm ơn đã đưa ra câu trả lời chính xác. Giống như các ý kiến ​​ở trên, tôi có một lý do để tạo khóa cho người dùng khác, nhưng tôi không nói lý do tại sao, vì vậy không có tranh luận.
FreeSoftwareServers

18

Trở thành người dùng bằng cách sử dụng su và chạy khóa như người dùng đó:

[root@kvm0001 ~]# su - joeuser
[joeuser@kvm0001 ~]$ ssh-keygen -t dsa (or rsa1 or rsa, depending on your security requirements)
Generating public/private dsa key pair.
Enter file in which to save the key (/home/joeuser/.ssh/id_dsa):

Tại sao chỉ định DSA?
Ram

Rất tiếc, lực lượng của thói quen. Hãy để tôi cập nhật.
Rilindo

4
bạn nên sử dụng rsa (hoặc possiblly một trong những biến thể đường cong elip). dsa được giới hạn ở keyizes không an toàn. rsa1 là một định dạng kế thừa cho ssh1 mà không ai nên sử dụng nữa.
Peter Green

Tôi joeuserlà một người sử dụng dịch vụ, do đó tôi không thể đăng nhập như họ. Làm cách nào để tôi cho phép người dùng dịch vụ (chỉ chạy các tiến trình) có khóa ssh?
Jonathan

@JonathanLeaders Bạn sẽ chỉ định shell cho người dùng khi trở thành người dùng đó. Một cái gì đó như thế này: `` `[root @ ip-10-254-41-211 ~] # grep ftp / etc / passwd ftp: x: 14: 50: Người dùng FTP: / var / ftp: / sbin / nologin [root @ ip-10-254-41-211 ~] # su - ftp su: cảnh báo: không thể thay đổi thư mục thành / var / ftp: Không có tệp hoặc thư mục như vậy Tài khoản này hiện không có sẵn. [root @ ip-10-254-41-211 ~] # su -s / bin / bash ftp bash-4.2 $ whoami ftp bash-4.2 $ `` `
Rilindo

6

Như đã thấy ở đây , bạn có thể sử dụng chmod để thay đổi quyền đọc của thư mục của người dùng mà bạn muốn thêm khóa SSH vào.

vim /home/username/.ssh/authorized_keys

Sau đó, chỉ cần dán khóa vào một dòng mới ở dưới cùng của tệp đó


1
Liên kết đã chết ...
Nyxynyx
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.