Cấu hình chứng thực khóa công khai với OpenSSH trên CentOS

Trong bài viết chúng ta sẽ cùng tìm hiểu việc cấu hình chứng thực khóa công khai với OpenSSH trên CentOS. Chúng ta sẽ sử dụng openssh-5.3 và hệ điều hành CentOS 6.4

Phát sinh khóa

Với khóa dựa trên RSA

Phát sinh cặp khóa công khai và bí mật cho tài khoản hiện tại bằng lệnh:

# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <Nhấn Enter>
Enter passphrase (empty for no passphrase): <Nhập mật khẩu. Không nên để trống>
Enter same passphrase again: <Nhập lại mật khẩu>
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
48:c0:d8:b1:fa:d3:fb:b0:da:9a:0c:60:ed:1d:b0:0f [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
| +o.             |
| . oo            |
| .. .            |
| ..o. .          |
|...E .. S        |
|....+..          |
| ..ooo           |
| o + +           |
| =o+..           |
+-----------------+

Kiểm tra kết quả

# ls -l $HOME/.ssh
-rw------- 1 root root 1675 Jul 10 15:35 id_rsa <Private key>
-rw-r--r-- 1 root root 397 Jul 10 15:35 id_rsa.pub <Public key>
-rw-r--r-- 1 root root 1176 Jul 7 08:35 known_hosts

Với khóa dựa trên DSA.

# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): <Nhấn Enter>
Enter passphrase (empty for no passphrase): <Nhập mật khẩu>
Enter same passphrase again: <Nhập lại mật khẩu trên>
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
37:95:dd:0b:1f:84:86:0f:15:19:56:04:6e:ad:74:9a [email protected]
The key's randomart image is:
+--[ DSA 1024]----+
|           o*O+  |
|          oo*o.  |
|          *=.+.  |
|        .o.B o   |
|       S o E o   |
|        . .      |
|                 |
|                 |
|                 |
+-----------------+

Kiểm tra kết quả

# ls -l $HOME/.ssh
-rw------- 1 root root 672 Jul 10 15:36 id_dsa <private key>
-rw-r--r-- 1 root root 605 Jul 10 15:36 id_dsa.pub <public key>
-rw-r--r-- 1 root root 1176 Jul 7 08:35 known_hosts

Trao đổi khóa

Sau khi đã tạo xong các cặp khóa, chúng ta tiến hành chép khóa công khai đến các máy khác.

# ssh-copy-id -i $HOME/.ssh/id_dsa.pub <remote_host>
[email protected]<remote_host>'s password:  <Nhập mật khẩu của tài khoản trên remote host>
Now try logging into the machine, with "ssh '<remote_host>'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.

Lệnh ssh-copy-id ở trên có tác dụng sao chép nội dung của khóa công khai đã tạo ở trên vào tập tin .ssh/authorized_keys trên <remote_host>.

Trong trường hợp không thể sử dụng lệnh ssh-copy-id, chúng ta có thể thực hiện các bước như sau:

  • Sao chép khóa công khai đến <remote_host>
# scp $HOME/.ssh/id_rsa.pub <remote_host>:$HOME/
  • Đăng nhập vào <remote_host>
# cat id_rsa.pub >> .ssh/authorized_keys
# chmod 600 .ssh/authorized_keys
# rm -vf id_rsa.pub

Thay <remote_host> bằng IP của máy từ xa tương ứng.

Kết nối

Sau khi đã trao đổi khóa công khai thành công, từ giờ chúng ta có thể kết nối bằng SSH đến các máy từ xa  mà không cần nhập mật khẩu mỗi lần kết nối.

# ssh <remote_host>
Enter passphrase for key '/root/.ssh/id_rsa': <Nhập mật khẩu của cặp khóa đã phát sinh ở trên>
Last login: Sat Jul 12 02:20:12 2014 from <remote_host> 
[[email protected]<remote_host> ~]# <Kết nối thành công> 

Lưu ý:

Nếu trong quá trình phát sinh khóa ở trên, nếu chúng ta không nhập passphrase thì khi chứng thực bằng khóa công khai sẽ không xuất hiện dòng yêu cầu nhập passphrase như ở trên:

# ssh <remote_host>
Last login: Sat Jul 12 02:20:12 2014 from <remote_host> 
[[email protected]<remote_host> ~]# <Kết nối thành công>

Chúng ta đã thực hiện xong việc cấu hình chứng thực khóa công khai với OpenSSH trên CentOS. Chúc các bạn thành công!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.