Cách nhanh nhất để sao chép Public Key của bạn lên máy chủ Ubuntu là sử dụng tiện ích có tên ssh-copy-id. Nhờ vào sự đơn giản của nó, phương pháp này được khuyến nghị rất cao nếu có sẵn. Nếu trên máy khách của bạn không có tiện ích ssh-copy-id, bạn có thể sử dụng một trong hai phương pháp thay thế được cung cấp trong phần này (sao chép qua SSH đăng nhập bằng mật khẩu, hoặc sao chép khóa thủ công).
Sao chép Public Key Sử dụng ssh-copy-id
Tiện ích ssh-copy-id được cài đặt mặc định trên nhiều hệ điều hành, vì vậy có thể nó đã có sẵn trên hệ thống của bạn.
Lưu ý: Để phương pháp này hoạt động, bạn phải có quyền truy cập SSH bằng mật khẩu vào máy chủ của bạn.
Để sử dụng tiện ích này, bạn chỉ cần chỉ định máy chủ từ xa mà bạn muốn kết nối, cùng với tài khoản người dùng có quyền truy cập SSH bằng mật khẩu. Đây chính là tài khoản mà Public Key của bạn sẽ được sao chép tới.
Cú pháp sử dụng như sau:
Tiếp theo, tiện ích sẽ quét tài khoản cục bộ của bạn để tìm khóa id_rsa.pub mà bạn đã tạo trước đó. Khi tìm thấy, nó sẽ yêu cầu bạn nhập mật khẩu của tài khoản người dùng trên máy chủ từ xa:
Bạn sẽ nhận được thông báo sau:
Tại thời điểm này, khóa id_rsa.pub của bạn đã được tải lên tài khoản từ xa. Bạn có thể tiếp tục sang Bước 3.
Sao chép Public Key Sử dụng SSH
Nếu bạn không có tiện ích ssh-copy-id nhưng có quyền truy cập SSH bằng mật khẩu vào tài khoản trên máy chủ, bạn có thể tải khóa của mình lên bằng phương pháp SSH truyền thống. Lưu ý, phương pháp này chỉ hoạt động nếu bạn có quyền truy cập SSH bằng mật khẩu vào máy chủ của mình.
Bạn có thể thực hiện bằng cách sử dụng lệnh cat
để đọc nội dung của Public Key trên máy cục bộ và chuyển nó qua một kết nối SSH đến máy chủ từ xa.
Ở phía máy chủ, hãy đảm bảo rằng thư mục ~/.ssh
tồn tại và có quyền truy cập phù hợp với tài khoản bạn đang sử dụng.
Sau đó, bạn có thể chuyển nội dung đã được chuyển qua vào file có tên authorized_keys
trong thư mục đó. Sử dụng ký hiệu chuyển hướng >>
để nối thêm nội dung vào cuối file thay vì ghi đè lên nó. Điều này cho phép bạn thêm khóa mà không làm mất các khóa đã được thêm trước đó.
Cú pháp đầy đủ như sau:
Sau đó, bạn sẽ được yêu cầu nhập mật khẩu của tài khoản người dùng trên máy chủ từ xa:
Sao chép Public Key Thủ Công
Nếu bạn không có quyền truy cập SSH bằng mật khẩu vào máy chủ của mình, bạn sẽ phải hoàn thành quá trình sao chép theo cách thủ công.
Phần này hướng dẫn cách thêm nội dung của file id_rsa.pub vào file ~/.ssh/authorized_keys
trên máy chủ từ xa một cách thủ công.
Để hiển thị nội dung của file id_rsa.pub trên máy cục bộ, hãy chạy lệnh:
Khi đã vào được tài khoản trên máy chủ từ xa, hãy đảm bảo rằng thư mục ~/.ssh
tồn tại. Lệnh sau sẽ tạo thư mục nếu chưa có, hoặc không làm gì nếu nó đã tồn tại:
Nếu bạn đang sử dụng tài khoản root để thiết lập khóa cho một tài khoản người dùng, điều quan trọng là thư mục ~/.ssh
phải thuộc về người dùng đó, chứ không phải root. Trong hướng dẫn này, tài khoản người dùng của chúng ta tên là sammy, nhưng bạn hãy thay thế bằng tên người dùng phù hợp:
Bước 3 — Đăng nhập vào Máy chủ Ubuntu Sử dụng SSH Keys | SSH Keys trên Ubuntu 18.04
Nếu bạn đã hoàn thành thành công một trong các phương pháp ở Bước 2, bạn sẽ có thể đăng nhập vào máy chủ từ xa mà không cần nhập mật khẩu cho tài khoản đó.
Quy trình thực hiện như sau:
Nếu bạn không cung cấp passphrase cho Private Key, bạn sẽ đăng nhập ngay lập tức. Nếu bạn đã thiết lập passphrase khi tạo khóa, bạn sẽ được yêu cầu nhập passphrase (lưu ý rằng khi nhập, các ký tự sẽ không hiển thị trên Terminal vì lý do bảo mật). Sau khi xác thực thành công, một phiên làm việc mới sẽ mở ra với tài khoản đã được cấu hình trên máy chủ Ubuntu.
Nếu việc xác thực dựa trên khóa thành công, hãy chuyển sang tìm hiểu cách bảo mật hệ thống của bạn thêm bằng cách vô hiệu hóa đăng nhập bằng mật khẩu.
Bước 4 — Vô Hiệu Hóa Đăng Nhập Bằng Mật Khẩu Trên Máy Chủ
Nếu bạn đã đăng nhập thành công vào tài khoản của mình bằng SSH mà không cần mật khẩu, bạn đã cấu hình thành công xác thực bằng SSH-key cho tài khoản của mình. Tuy nhiên, cơ chế đăng nhập bằng mật khẩu vẫn còn hoạt động, nghĩa là máy chủ của bạn vẫn có nguy cơ bị tấn công brute-force.
Trước khi thực hiện các bước trong phần này, hãy đảm bảo rằng bạn đã cấu hình xác thực SSH-key cho tài khoản root trên máy chủ, hoặc tốt hơn, đã cấu hình xác thực SSH-key cho một tài khoản không phải root có quyền sudo. Bước này sẽ khóa chế độ đăng nhập bằng mật khẩu, đảm bảo rằng bạn vẫn có quyền truy cập quản trị – điều này rất quan trọng.
Sau khi xác nhận tài khoản từ xa của bạn có quyền quản trị, đăng nhập vào máy chủ từ xa bằng SSH-key, bằng tài khoản root hoặc tài khoản có quyền sudo. Sau đó, mở file cấu hình của SSH daemon:
Hiện nay, SSH daemon trên máy chủ Ubuntu của bạn chỉ phản hồi các kết nối sử dụng xác thực bằng SSH-key, và đăng nhập bằng mật khẩu đã bị vô hiệu hóa.
Kết Luận
Bạn bây giờ đã cấu hình thành công xác thực bằng SSH-key trên máy chủ, cho phép bạn đăng nhập mà không cần cung cấp mật khẩu cho tài khoản.
Nếu bạn muốn tìm hiểu thêm về cách làm việc với SSH, hãy xem hướng dẫn SSH Essentials Guide của chúng tôi.