TaMinhTri avatar

Tạ Minh Trí

IT Infrastructure
  • Emailtaminhtri.it@gmail.com
  • Phone+84 961984570
  • Birthday23 March
  • LocationHo Chi Minh, Vietnam

Hướng dẫn sử dụng Public Key để truy cập từ CentOS Client vào CentOS Server

     Xin chào các bạn, để tiếp nối cho series CentOS thì hôm nay mình sẽ hướng dẫn các bạn sử dụng Public Key để truy cập vào server CentOS. Để có thể hiểu được Public Key là gì chúng ta cùng đi vào tìm hiểu về SSH nhé. Chúng ta cùng bắt đầu thôi nào!



1. SSH là gì?

  • SSH là từ viết tắt của Secure Shell, đây là giao thức mã hóa được sử dụng bởi các người dùng hệ điều hành Linux để kết nối từ xa đến Server Linux (Centos, Ubuntu, RHEL…)
  • Cơ chế hoạt động của SSH là sản sinh ra 1 cặp Key bao gồm Public Key và Private Key. 
  • Trong đó: 
  • Public Key được lưu ở phía Server để xác thực với Private Key từ phía Client gửi lên. Nếu cặp key này phù hợp với nhau thì sẽ cho phép kết nối.
  • Có 2 cách để kết nối tới Server từ xa:
  • Sử dụng mật khẩu
  • Sử dụng Public Key / Private Key
  • Trong đó việc sử dụng Public Key được khuyến khích hơn vì đảm bảo độ bảo mật hơn sử dụng mật khẩu.

2. Cài đặt OpenSSH trên cả CentOS Server và Clients:

  • Bước 1: Để có thể tạo được Public Key chúng ta cần phải cài đặt OpenSSH Server và OpenSSH Client bằng câu lệnh sau:

    sudo yum -y update

    sudo yum -y install openssh-server openssh-clients

  • Bước 2: Thực hiện kiểm tra Version của SSH bằng câu lệnh:

    ssh -V


  • Bước 3: Khởi động dịch vụ SSH:

    sudo systemctl start sshd



  • Bước 4: Kiểm tra trạng thái dịch vụ SSH:

    sudo systemctl status sshd


  • Bước 5: Khởi động dịch vụ OpenSSH tự động mỗi khi hệ thống khởi động lại:

    sudo systemctl enable sshd


3. Tạo Public Key:

  • Trên Centos Client:
  • Bước 1: Tạo cặp khóa SSH (SSH Key Pair) với kiểu mã hóa khuyến nghị tối thiểu 2048-bit RSA 

    ssh-keygen -t rsa

  • Lưu ý: mã hóa với số bit càng cao thì độ bảo mật càng tốt. Nếu muốn tăng số bit mã hóa lên ví dụ 4096-bit chúng ta sẽ sử dụng câu lệnh sau:

    ssh-keygen -t rsa -b 4096



  • Bước 2: Hệ thống sẽ yêu cầu nhập vào tên file để lưu key. Mặc định nếu nhấn Enter key sẽ được lưu tại /root/.ssh/id_rsa

  • Bước 3: Hệ thống sẽ yêu cầu bạn tạo Passphrase ( được dùng để bảo vệ Private key khỏi việc bị sử dụng bởi những người không biết passphrase) Khuyến khích sử dụng và lưu ý CentOS sẽ không hiển thị những gì mà chúng ta nhập. Do mục đích demo mình sẽ bỏ qua bước này.

  • Hệ thống sẽ trả về một số thông tin cơ bản đã thiết lập:

4/ Thiết lập Public Key trên CentOS Server để máy Client có thể kết nối:

  • Trên CentOS server cấu hình Public Key:
  • Bước 1: Sử dụng trình edit văn bản để mở file /etc/ssh/sshd_config

    sudo nano /etc/ssh/sshd_config

  • Bước 2: Đảm bảo có 2 dòng sau trong file cấu hình sshd_config, nếu có dấu # trước đó thì hãy xóa dấu # đi.

    PubkeyAuthentication yes

    AuthorizedKeysFile .ssh/authorized_keys


  • Bước 3: Thêm dấu # vào trước 2 dòng sau và file cấu hình sshd_config:

    #GSSAPIAuthentication Yes

    #GSSAPICleanupCredentials no

  • Bước 4: Nhấn tổ hợp phím Ctrl + O sau đó Enter để lưu và Ctrl + X để thoát khỏi chỉnh sửa.

  • Bước 5: Copy Public Key vừa tạo ở Centos-Client vào file authorized_keys trên Server

    scp root@ip_centos_client:/root/.ssh/id_rsa.pub /root/.ssh/authorized_keys


  • Một thông báo kết nối sẽ hiện ra. Nhập Yes để tiếp tục.

  • Nhập mật khẩu của Centos-Client để kết nối.

  • Bước 6: Kiểm tra xem Public Key đã được chép vào file authorized_key hay chưa.

    cat /root/.ssh/authorized_keys


  • Bước 7: Phân quyền cho các thư mục chứa keys:

    chmod 700 /root/

    chmod 700 /root/.ssh/

    chmod 600 /root/.ssh/authorized_keys/


  • Bước 8: Xóa bỏ liên kết SSH cũ khi chạy câu lệnh scp để copy Public Key to Server.

    sudo nano /root/.shh/known_hosts

  • Xóa bỏ địa chỉ IP của Centos Client trong file known_hosts.
  • Bước 9: Chạy câu lệnh sau để khởi động lại dịch vụ SSH:

    sudo systemctl restart sshd

    sudo service sshd restart 

5. Thiết lập trên máy CentOS Client để có thể kết nối với CentOS Server:

  • Bước 1: Tạo 1 folder để chứ Private Key đã tạo trước đó.

    sudo mkdir /root/.ssh/Private_Key


  • Bước 2: Di chuyển file Private Key đã tạo vào thư mục Private_Key:

    mv /root/.ssh/id_rsa /root/.ssh/Private_Key


  • Bước 3: Chỉnh sửa file ssh_config để khai báo nơi chứa Private Key tương ứng với các host sẽ SSH tới.

    sudo nano /etc/ssh/ssh_config

  • Bước 4: Thêm các dòng sau vào file config:

    Host 192.168.1.29

    PreferredAuthentications publickey

    IdentityFile “~/.ssh/Private_Key/id_rsa”


  • Trong đó:
  • Host 192.168.1.29 là khai báo địa chỉ IP của CentOS Server.
  • PreferredAuthentications publickey là ưu tiên sử dụng Publickey để xác thực
  • IdentityFile là đường dẫn tới Private Key trên Client.
  • Bước 5: Nhấn tổ hợp phím Ctrl + OEnter để lưu. Sau đó nhấn tổ hợp phím Ctrl + X để thoát chỉnh sửa file config.
  • Bước 6: Thực hiện phân quyền cho thư mục.

    sudo chmod 700 /root/

    sudo chmod 700 /root/.ssh/

    sudo chmod 700 /root/.ssh/Private_Key/

    sudo chmod 600 /root/.ssh/Private_Key/id_rsa/


  • Bước 7: Chạy câu lệnh sau để khởi động lại dịch vụ SSH:

    sudo systemctl restart sshd

    sudo service sshd restart


6. Tiến hành SSH từ Client sang Server:


  • Trên máy Client nhập câu lệnh sau để SSH tới server:

    ssh <username>@<Server_IP>



  • Lưu ý: nhớ thay thế <username> bằng username mà bạn đã tạo trên CentOS Server và thay thế <Server_IP> ở trên bằng địa chỉ IP của CentOS Server.
  • Một thông báo kết nối hiện ra. Nhập Yes để kết nối.

  • Vậy là ta đã thành công SSH đến CentOS server bằng Publickey mà không phải nhập bất cứ mật khẩu nào.

  • Trên đây là hướng dẫn SSH từ CentOS Client đến CentOS Server bằng Publickey. Chúc các bạn thành công.


Author: Trí Tạ

Nhận xét

Tìm kiếm Blog này