SSH sử dụng cặp khoá công khai / bí mật phần I

07:06 Unknown 0 Comments

SSH là gì?

SSH là viết tắt của từ tiếng Anh “Secure SHell”, là một giao thức mạng có mã hoá để đảm bảo an toàn dữ liệu truyền tải (1), đăng nhập dòng lệnh từ xa (2), thực thi lệnh từ xa (3) và các dịch vụ mạng an toàn khác giữa hai máy tính đã được kết nối với một phía chạy SSH Server và phía kia là SSH Client.
openssh
Ở bài viết này chúng tôi xin hướng dẫn sử dụng cặp khoá công khai / bí mật cho 3 chức năng thường được sử dụng nhất của SSH.

1. Cài đặt SSH Server và SSH Client

Ở trên Linux, thông thường chúng ta sử dụng OpenSSH. Ở đây chúng tôi hướng dẫn cài đặt trên Ubuntu/Debian
Phía Server:
apt-get install openssh-server
Phía Client:
apt-get install openssh-client
Bạn có thể cài đặt gói ssh để được cả openssh-server và openssh-client
apt-get install ssh

2. Tạo và cài đặt cặp key – khoá công khai / bí mật

Sử dụng cặp khoá công khai / bí mật sẽ giúp việc xác thực giữa ssh client và ssh server mà không cần sử dụng đến mật khẩu của user.

2.1 Tạo cặp key

Sử dụng lệnh ssh-keygen để tạo cặp key.
Cách đơn giản nhất, các bạn chỉ cần gọi lệnh ssh-keygen không kèm theo bất kỳ tuỳ chọn nào
[root@a.wikilinux.vn:~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
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:
40:f3:bf:4e:f3:6c:26:56:f3:04:3a:28:de:17:17:3a root@a.wikilinux.vn.itim.vn
The key’s randomart image is:
+–[ RSA 2048]—-+
| o                                |
| . o                              |
| . .                               |
| . . o                            |
| S..o o                         |
|   . . E.+ .                    |
| . o +* +                     |
| . .o++o .                    |
| o.+o                           |
+———————+
[root@a.wikilinux.vn:~]#
Các bạn sẽ nhận được câu hỏi về đặt passphrase, nếu bạn không chắc hiểu về nó, thì bạn nên bỏ qua bằng cách enter.
Mọi thứ mặc định đều ổn, sau khi thực hiện xong bạn sẽ có cặp key nằm ở thư mục ~/.ssh/, với khoá bí mật (private key) là file id_rsa và khoá công khai (public key) id_rsa.pub. Đúng như tên gọi, các bạn cần giữ bí mật về nội dung của file id_rsa và đẩy đi file id_rsa.pub cho phía server cần được xác thực.
Các bạn có thể thay đổi tên cặp key được tạo với tuỳ chọn -f, thay đổi kiểu mã hoá mặc định từ rsa sang dsa với tuỳ chọn -t, và nhiều tuỳ chọn khác các bạn có thể đọc thêm man.

2.2 Cài đặt khoá công khai

Cài đặt khoá công khai, tức là bạn cần đẩy (ghi vào cuối file) được nội dung file khoá công khai id_rsa.pub vừa tạo vào file ~/.ssh/authorized_keys ở phía ssh server.
Cách đơn giản nhất, bạn dùng lệnh ssh-copy-id để thực hiện điều này
ssh-copy-id [-i [identity_file]] [user@]machine
Ví dụ:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@b.wikilinux.vn

3. Sử dụng

3.1 Đăng nhập từ xa (Remote login)

Sau khi đã cài đặt được khoá công khai của user trên a.wikilinux.vn lên b.wikilinux.vn, giờ việc đăng nhập từ xa (ssh) từ a.wikilinux.vn lên b.wikilinux.vn sẽ không cần dùng đến mật khẩu.
[root@a.wikilinux.vn:~]# ssh b.wikilinux.vn


[root@b.wikilinux.vn:~]#

3.2 Copy không cần mật khẩu (password)

Việc copy file bằng lệnh scp từ b.wikilinux.vn sang a.wikilinux.vn cũng không cần xác thực password.
[root@a.wikilinux.vn:/tmp]# scp root@b.wikilinux.vn:/tmp/a.txt .
a.txt                                                        100% 7196 7.0KB/s 00:00
[root@a.wikilinux.vn:/tmp]#

3.3 Thực hiện lệnh từ xa

Đứng từ a.wikilinux.vn, chúng ta có thể tạo 1 phiên ssh để thực hiện 1 lệnh (hoặc 1 số lệnh) trên phía b.wikilinux.vn mà không cần xác thực password.
Ví dụ chúng ta muốn cài vim lên b.wikilinux.vn:
[root@a.wikilinux.vn:~]# ssh b.wikilinux.vn apt-get install vim
Điều này rất có ý nghĩa trong việc làm việc với nhiều servers khác nhau.
Ví dụ chúng ta có 100 servers có tên từ b1.wikilinux.vn -> b100.wikilinux.vn, chúng ta cần cài vim lên cả 100 servers này. Việc này thực hiện hết sức dễ dàng sau khi đã cài đặt cặp key từ a.wikilinux.vn lên cả 100 servers kia, như sau:
[root@a.wikilinux.vn:~]# for i in {1..100}; do ssh b${i}.wikilinux.vn apt-get install -y vim; done

0 nhận xét: