Nếu bạn quản lý một máy chủ Linux, thì bạn sẽ biết việc nhập mật khẩu mỗi lần đăng nhập qua SSH hoặc sao chép tệp bằng scp sẽ tẻ nhạt đến mức nào. Hướng dẫn này giới thiệu cách sử dụng Khóa SSH để đăng nhập SSH không cần mật khẩu và không cần nhập mật khẩu khi sử dụng scp để sao chép tệp. Ngoài việc hỗ trợ đăng nhập SSH và sao chép tệp SCP, đăng nhập không cần mật khẩu SSH còn bổ sung một dòng bảo mật khác cho máy chủ Linux.

Các bước thiết lập đăng nhập không cần mật khẩu SSH

  1. Đầu tiên, chúng tôi tạo một cặp Khóa SSH trên hệ thống Linux của mình: khóa SSH và khóa chung SSH. Chìa khóa được lưu giữ trên hệ thống Linux của riêng nó.
  2. Sau đó, khóa chung được tải lên máy chủ Linux. Sau đó chúng ta có thể đăng nhập qua SSH mà không cần mật khẩu. Khóa SSH giống như bằng chứng nhận dạng của bạn.

1 Tạo khóa SSH và khóa chung trên hệ thống Linux của riêng bạn

Mở một thiết bị đầu cuối và sử dụng ssh-keygen bên dưới để tạo khóa RSA và khóa chung. -t cho biết loại, có nghĩa là tạo khóa mã hóa RSA.

 
ssh-keygen -t rsa

RSA cũng là loại mã hóa mặc định. Vì vậy, bạn cũng có thể chỉ cần nhập ssh-keygen. Độ dài RSA mặc định là 2048 bit. Nếu bạn rất quan tâm đến bảo mật, bạn có thể chỉ định độ dài 4096 bit.

ssh-keygen -b 4096 -t rsa

Trong quá trình tạo SSH Key, bạn sẽ được yêu cầu chỉ định file để lưu key. Chỉ cần nhấn Enter để sử dụng file mặc định. Sau đó, bạn cần nhập mật khẩu để mã hóa Khóa SSH của mình. Mật khẩu phải dài ít nhất 20 ký tự. Khóa SSH sẽ được lưu trong tệp .ssh/id_rsa trong thư mục chính. Khóa công khai SSH được lưu trong tệp .ssh/id_rsa.pub.

Generating public/private rsa key pair.
Enter file in which to save the key (/home/matrix/.ssh/id_rsa):  按Enter键
Enter passphrase (empty for no passphrase):   输入一个密码
Enter same passphrase again:   再次输入密码
Your identification has been saved in /home/matrix/.ssh/id_rsa.
Your public key has been saved in /home/matrix/.ssh/id_rsa.pub.
The key fingerprint is:
e1:dc:ab:ae:b6:19:b0:19:74:d5:fe:57:3f:32:b4:d0 matrix@vivid
The key's randomart image is:
+---[RSA 4096]----+
| .. |
| . . |
| . . .. . |
| . . o o.. E .|
| o S ..o ...|
| = ..+...|
| o . . .o .|
| .o . |
| .++o |
+-----------------+

Nếu nhìn vào tệp .ssh/id_rsa, bạn sẽ thấy tệp này đã được mã hóa. Tức là nó được mã hóa bằng mật khẩu bạn đã nhập.

less .ssh/id_rsa

 

2Tải khóa chung SSH lên máy chủ Linux

Điều này có thể được thực hiện bằng lệnh ssh-copy-id.

ssh-copy-id username@remote-server

 

Sau khi nhập mật khẩu của người dùng từ xa, khóa chung SSH sẽ được tự động tải lên. Khóa công khai SSH được lưu trữ trong tệp .ssh/authorized_keys trên máy chủ Linux từ xa.

Sau khi upload xong, bạn không cần nhập lại mật khẩu để đăng nhập SSH. Tuy nhiên, khi sử dụng SSH Key để đăng nhập lần đầu tiên, bạn cần nhập mật khẩu mã hóa của khóa SSH một lần. (Bạn chỉ cần nhập một lần và sau này bạn sẽ được đăng nhập tự động. Bạn không cần nhập mật khẩu cho khóa nữa.)

Không cần nhập mật khẩu khi sử dụng lệnh scp để truyền tệp.

Kiến thức về khóa SSH

Hệ thống Linux có chương trình quản lý khóa. Vòng chìa khóa được bảo vệ bằng mật khẩu đăng nhập của người dùng. Khi bạn đăng nhập vào hệ thống Linux, mật khẩu vòng chìa khóa sẽ tự động được mở khóa, cho phép bạn truy cập vào vòng chìa khóa. Mật khẩu cho khóa SSH cũng có thể được lưu trữ trong khóa. Do đó, khi sử dụng khóa SSH để đăng nhập vào máy chủ Linux từ xa lần đầu tiên, bạn cần nhập mật khẩu của khóa SSH một lần. Trong tương lai, bạn sẽ không cần nhập mật khẩu khi đăng nhập bằng khóa SSH nữa. Chương trình keyring cho Ubuntu là seahorse.

Khóa SSH giống như bằng chứng nhận dạng của bạn. Máy chủ Linux từ xa sử dụng khóa chung SSH mà bạn đã tạo để mã hóa tin nhắn và chỉ khóa SSH của bạn mới có thể giải mã được tin nhắn. Do đó, nếu người khác không có khóa SSH của bạn, họ sẽ không thể giải mã tin nhắn được mã hóa và do đó họ sẽ không thể đăng nhập vào máy chủ Linux của bạn.

Thiết lập đăng nhập SSH không cần mật khẩu rất đơn giản.

Để lại một câu trả lời