Cách thêm khóa SSH trên Ubuntu 20.04

Thiết lập đăng nhập không cần mật khẩu an toàn vào máy chủ Ubuntu từ xa của bạn bằng các khóa SSH

SSH là một giao thức mạng máy chủ-máy khách an toàn giúp máy khách kết nối và giao tiếp với máy chủ từ xa. Kết nối SSH đảm bảo rằng các lệnh được nhập vào thiết bị đầu cuối được gửi đến máy chủ từ xa thông qua một kênh được mã hóa.

Có hai loại cơ chế xác thực được sử dụng để kết nối với máy chủ từ xa, xác thực dựa trên mật khẩu (dễ bị tấn công Brute-force) và xác thực dựa trên SSH Keys (rất an toàn).

Trong xác thực dựa trên khóa SSH, một cặp khóa được tạo trên máy tính khách, được gọi là khóa công khai và khóa riêng tư. Một bản sao của khóa công khai này được cung cấp trên máy chủ từ xa. Khi một máy khách gửi một yêu cầu kết nối đến máy chủ thì máy chủ sẽ tạo ra một chuỗi ngẫu nhiên và mã hóa nó bằng cách sử dụng khóa công khai. Chuỗi này chỉ có thể được giải mã bằng khóa riêng có sẵn trên máy khách. Phương pháp này đảm bảo rằng máy chủ chỉ có thể được truy cập bởi các máy khách có chứa khóa cá nhân.

Trong hướng dẫn này, chúng ta sẽ xem cách thiết lập Khóa SSH trên máy chủ Ubuntu 20.04 LTS.

Xem liệu bạn có bất kỳ Khóa SSH nào hiện có trên máy tính của mình không

Để kiểm tra xem Cặp khóa SSH đã tồn tại trên máy tính của bạn hay chưa, hãy nhập lệnh này vào thiết bị đầu cuối của bạn.

ls -l ~ / .ssh / id _ *. quán rượu

Nếu lệnh trên trả về Không có tập tin hoặc thư mục hoặc là Lọc kết quả tìm thấy, thì có nghĩa là cặp khóa SSH không tồn tại.

Nếu bạn có một cặp khóa SSH hiện tại, thì bạn có thể sử dụng cùng một cặp khóa để truy cập hai máy chủ từ xa hoặc bạn cũng có thể tạo một cặp khóa khác có tên khác. Hãy chuyển sang bước tiếp theo và xem cách tạo khóa SSH cho cả hai trường hợp.

Tạo khóa SSH trên máy tính khách

Để tạo một cặp khóa SSH mới trên máy tính của bạn, hãy nhập lệnh như hình dưới đây.

ssh-keygen

Theo mặc định, các khóa SSH là 2048 bit. Để bảo mật tốt hơn, nếu bạn muốn tạo khóa SSH với bit cao hơn, hãy sử dụng lệnh sau.

ssh-keygen -b 4096

Nếu lệnh chạy thành công, thì thông báo sau sẽ xuất hiện trên màn hình của bạn.

tạo cặp khóa rsa công khai / riêng tư. Nhập tệp để lưu khóa (/home/harshit/.ssh/id_rsa):

Bây giờ nếu bạn không có bất kỳ cặp khóa SSH hiện có nào trên máy tính của mình thì chỉ cần nhấn đi vào, nhưng nếu bạn có khóa SSH hiện tại thì hãy lưu khóa với một tên tệp khác như hình dưới đây.

Nhập tệp để lưu khóa (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_xxx

Thay thế cái xxx ở cuối tên tệp bằng một tên thích hợp, như hình dưới đây và nhấn đi vào.

Nhập tệp để lưu khóa (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_client_1

Lời nhắc tiếp theo sẽ yêu cầu bạn nhập cụm mật khẩu có độ dài tùy ý, nó sẽ đảm bảo bảo mật hai cấp trên thiết bị của bạn.

Nhập cụm mật khẩu (trống không có cụm mật khẩu): Nhập lại cùng một cụm mật khẩu:

Nhập cụm mật khẩu này sẽ đảm bảo rằng ngay cả khi một người có quyền truy cập vào khóa riêng tư của bạn, thì họ sẽ không thể truy cập vào máy chủ từ xa của bạn nếu không có cụm mật khẩu này.

Sau khi toàn bộ quá trình hoàn tất, thông báo sau sẽ xuất hiện trên màn hình của bạn.

ssh-keygen -b 4096 Sau khi toàn bộ quá trình tạo khóa SSH hoàn tất, thông báo sau sẽ xuất hiện trên màn hình của bạn.

Khóa SSH đã được tạo trên hệ thống của bạn. Bây giờ đã đến lúc sao chép khóa công khai trên máy chủ từ xa.

Sao chép khóa công khai vào Máy chủ Ubuntu từ xa

Phương pháp dễ nhất và nhanh nhất để sao chép Khóa công khai vào máy chủ từ xa là sử dụng ssh-copy-id tính thiết thực. Nhưng nếu tiện ích này không khả dụng trên máy của bạn vì lý do nào đó thì bạn cũng có thể sử dụng các phương pháp khác được cung cấp trong phần này.

Sử dụng tiện ích ssh-copy-id

Các ssh-copy-id Theo mặc định, tiện ích có sẵn trên máy Ubuntu của bạn, tiện ích này sẽ sao chép khóa công khai từ thiết bị của bạn vào thư mục thích hợp trên máy Ubuntu từ xa của bạn.

Để sao chép khóa ssh công khai, chỉ cần nhập lệnh vào thiết bị đầu cuối của bạn, như hình dưới đây.

tên người dùng ssh-copy-id @ hostname

Thay thế cái tên tài khoảntên máy chủ trong lệnh trên với tên người dùng và tên máy chủ của máy chủ của bạn.

Thông báo sau sẽ xuất hiện trên thiết bị đầu cuối của bạn nếu bạn đang kết nối với máy chủ của mình lần đầu tiên, hãy nhập Đúng và hãy nhấn đi vào.

Không thể thiết lập tính xác thực của máy chủ lưu trữ '172.105.XX.XX (172.105.XX.XX)'. Tệp tham chiếu khóa ECDSA là xx: xx: xx: xx: 77: fe: 73: xx: xx: 55: 00: ad: d6: xx: xx: xx. Bạn có chắc chắn muốn tiếp tục kết nối (có / không)? Đúng

Bây giờ ssh-copy-id tiện ích sẽ quét tệp có tên id_rsa.pub chứa khóa SSH công khai. Khi quá trình quét hoàn tất, nó sẽ nhắc bạn nhập mật khẩu của máy chủ từ xa, như hình dưới đây. Nhập mật khẩu và nhấn đi vào.

/ usr / bin / ssh-copy-id: INFO: cố gắng đăng nhập bằng (các) khóa mới, để lọc ra bất kỳ khóa nào đã được cài đặt / usr / bin / ssh-copy-id: INFO: 1 khóa ) vẫn được cài đặt - nếu bây giờ bạn được nhắc, bạn phải cài đặt các khóa mới mật khẩu của [email protected]:

Sau khi khóa được thêm vào, thông báo sau sẽ xuất hiện trên thiết bị đầu cuối của bạn dưới dạng đầu ra.

Số lượng khóa đã thêm: 1 Bây giờ, hãy thử đăng nhập vào máy bằng: "ssh '[email protected]'" và kiểm tra để đảm bảo rằng chỉ (các) khóa bạn muốn mới được thêm vào.

Trong trường hợp bạn có nhiều khóa SSH trên máy tính khách của mình thì để sao chép khóa công khai thích hợp vào máy tính từ xa của bạn, hãy nhập lệnh trong mẫu hiển thị bên dưới.

tên người dùng ssh-copy-id -i id_rsa_xxx.pub @ host

💡 Mẹo

Đừng quên đặt .pub ở cuối tên tệp khi nhập vào thiết bị đầu cuối.

Sao chép khóa công khai bằng phương pháp đường ống

Nhập lệnh sau vào thiết bị đầu cuối nếu ssh-copy-id tiện ích không có sẵn. Lệnh này có vẻ dài hơn một chút nhưng nó hoạt động thích hợp.

mèo ~ / .ssh / id_rsa.pub | ssh remote_username @ server_ip_address "mkdir -p ~ / .ssh && touch ~ / .ssh / allow_keys && chmod -R go = ~ / .ssh && cat >> ~ / .ssh / allow_keys"

Thay thế remote_usernameserver_ip_address với tên người dùng và địa chỉ IP của bạn.

Nếu bạn có nhiều khóa SSH trên máy tính của mình thì hãy thay thế id_rsa.pub với tệp khóa SSH công khai mà bạn chọn. Ví dụ, id_rsa_client_1.pub.

Nhập mật khẩu người dùng từ xa khi được nhắc và nhấn đi vào.

Mật khẩu của [email protected]:

Sau khi bạn nhập mật khẩu, id_rsa.pub tệp sẽ được sao chép vào ủy quyền tệp của máy chủ từ xa.

Sao chép thủ công Khóa công khai

Sử dụng phương pháp này khi bạn không có quyền truy cập vào hệ thống từ xa của mình thông qua xác thực mật khẩu.

Mở id_rsa.pub tập tin bằng cách sử dụng con mèo lệnh trong thiết bị đầu cuối. Bạn cũng có thể mở nó từ một trình soạn thảo văn bản, mục đích chỉ là sao chép nội dung của tập tin.

mèo ~ / .ssh / id_rsa.pub

Nội dung của tệp sẽ như thế nào, như hình dưới đây.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib + VvJyZ + dGO8zRNT64 + SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6Hy / 65 + qqmiuLyuIQXjDiiYTjHTx + VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z + csqdvIDQfMuH tên_của_bạn @ your_PC

Bây giờ, đăng nhập vào máy chủ từ xa của bạn và dán nội dung đã sao chép bằng lệnh hiển thị bên dưới. Thay thế cái trên_string với nội dung được sao chép.

echo above_string >> ~ / .ssh / allow_keys

Định cấu hình nhiều khóa SSH (Tùy chọn)

Bước này dành cho những người đã thiết lập nhiều Khóa SSH trên máy tính khách của họ. Bỏ qua phần này nếu bạn chỉ có một thiết lập Khóa SSH.

Để quản lý nhiều Khóa SSH, bây giờ chúng ta sẽ tạo một cấu hình tập tin bên trong .ssh thư mục bằng cách sử dụng lệnh hiển thị bên dưới.

cd ~ / .ssh vim cấu hình

Loại tôi để vào chế độ lệnh và nhập chi tiết của nhiều máy chủ, như được hiển thị trong ví dụ sau:

Host từ xa-ubuntu-server HostName 172.105.XX.XX Người dùng root IdentityFile ~ / .ssh / id_rsa_client_1 Host remote-ubuntu-server HostName 172.106.XX.XX User root IdentityFile ~ / .ssh / id_rsa_client_2

Tương tự, hãy nhập thông tin chi tiết của các máy chủ từ xa khác và khóa của chúng. Sau khi quá trình hoàn tất, nhấn Thoát ra: wq để lưu và thoát.

Bây giờ các quy trình tiếp theo đều giống nhau đối với cả việc có một hoặc nhiều Khóa SSH trên máy tính khách.

Đăng nhập vào máy chủ từ xa của bạn bằng các khóa SSH

Khi quá trình sao chép Khóa công khai của bạn hoàn tất, hãy đăng nhập vào máy chủ từ xa của bạn bằng cách gõ lệnh như hình dưới đây.

ssh remote_username @ server_ip_address

Nếu bạn đã cung cấp cụm mật khẩu trong khi tạo cặp khóa thì bạn sẽ được nhắc nhập cụm mật khẩu đó. Một phiên mới sẽ mở sau khi quá trình xác thực hoàn tất.

Bây giờ bạn đã định cấu hình thành công xác thực dựa trên khóa SSH trên máy chủ từ xa của mình. Nhưng xác thực dựa trên mật khẩu vẫn đang hoạt động trên máy chủ của bạn, điều này có nghĩa là máy chủ Remter của bạn vẫn dễ bị tấn công brute-force.

Vì vậy, bây giờ chúng tôi sẽ vô hiệu hóa hoàn toàn cơ chế đăng nhập dựa trên mật khẩu từ máy chủ từ xa của chúng tôi.

Tắt Cơ chế đăng nhập dựa trên mật khẩu

Trước khi bạn thực hiện bất kỳ thay đổi nào, hãy đảm bảo rằng người dùng root hoặc bất kỳ người dùng nào đã bật sudo cho tài khoản từ xa của bạn có quyền truy cập vào máy chủ của bạn bằng hệ thống xác thực dựa trên khóa SSH. Bước này sẽ khóa hoặc vô hiệu hóa hoàn toàn đăng nhập dựa trên mật khẩu, vì vậy điều quan trọng là ít nhất một đặc quyền root của người dùng có quyền truy cập vào máy chủ thông qua khóa SSH.

Đăng nhập vào máy chủ Ubuntu từ xa của bạn và nhập lệnh hiển thị bên dưới.

sudo vim / etc / ssh / sshd_config
  • nhấn Thoát ra, / và nhập 'Xác thực mật khẩu' và nhấn đi vào.
  • Bây giờ bấm tôi và thay đổi giá trị của ‘PasswordAuthentication yes’ thành ‘PasswordAuthentication no’.
  • nhấn Thoát ra và lặp lại quy trình trên để tìm ‘ChallengeResponseAuthentication’, ‘UsePAM’ và thay đổi giá trị của chúng thành không cũng.
PasswordAuthentication không ChallengeResponseAuthentication không UsePAM không

Sau khi tất cả các giá trị được đặt thành không, nhấn Thoát ra, loại : wq va đanh đi vào.

Để kích hoạt tất cả các thay đổi, hãy khởi động lại ssh dịch vụ bằng cách sử dụng lệnh dưới đây.

sudo systemctl khởi động lại ssh

Bây giờ, hãy mở một cửa sổ đầu cuối mới trên máy tính của bạn và xác minh rằng xác thực Khóa SSH của bạn đang hoạt động bình thường trước khi đóng phiên hiện tại.

Khi quá trình xác minh hoàn tất, hãy đóng tất cả các phiên đang chạy.

Bây giờ chúng tôi đã định cấu hình thành công xác thực dựa trên Khóa SSH trên máy chủ Ubuntu 20.04 của chúng tôi. Giờ đây, không ai có thể đăng nhập vào máy chủ của bạn bằng cơ chế đăng nhập dựa trên mật khẩu.