SSH hay còn được biết đến là secure shell. Là một phương thức được sử dụng để mã hóa dữ liệu khi bạn kết nối từ máy bạn đến server. Phần lớn thời gian các bạn thực hiện thao tác với server bằng cách remote . Vậy nên việc này là rất cần thiết. Ở bài này mình sẽ hướng dẫn mọi người cách làm thế nào để có thể sử dụng ssh-key ubuntu 20.04

Trong bài này mình sẽ hướng dẫn các bạn cách làm sao có thể sử dụng được ssh trong ubuntu 20.04. Nhưng mà bạn nào còn chưa biết cách làm sao để cài đặt được ip static cho nó thì hãy tham khảo bài hướng dẫn cài đặt ip static trên ubuntu 20.04

1. Mô hình

IP Planning

HOSTNAMEIP DISKRAMCPU
client 10.10.34.13110G1G1
ubuntu10.10.34.13230G2G2

Kịch bản :

  • Tạo cặp key trên client
  • Copy public key lên server và SSH tới server để kiểm tra
  • Disable SSH password và SSH root
  • Kiểm tra lại việc ssh

2. Thực hiện trên client

2.1 Tạo ra cặp key

Bước đầu tiên ta thực hiện là phải tạo ra một cặp khóa trên client thường là máy tính của bạn được sử dụng để ssh tới server

ssh-keygen

Sau khi bạn nhập lệnh thì sẽ thấy hai dòng đầu được hiện thị.

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):

Bước này là để xác định thư mục lưu trữ. Nếu bạn nhấn enter thì mặc định nó sẽ lưu trữ như thư mục trong ngoặc. Sau khi xong thì nó sẽ hiển thị 2 dòng tiếp sau

Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
  • Dòng đầu tiên là để thông báo đã tạo xong thư mục bên trên.
  • Dòng thứ 2 được hỏi là có đặt mật khẩu cho key ssh này không. Mật khẩu này chỉ xác thực trên local không được gửi đi trên mạng khi mà ssh tới server.
  • Và dòng thứ 3 là xác nhận lại mật khẩu. Sau khi xác nhận xong là hoàn thành bước tạo key trên client và sẽ có output như sau
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:
SHA256:jyB9C2UjyDePDlCwnXbHagjx7ocof29CfcvhPPNSrIM root@client
The key's randomart image is:
+---[RSA 2048]----+
|  o..            |
|   B o .         |
|  + B = *        |
|   = = X .       |
|    =.B S.       |
|   o.*.+o+o      |
|. ..o o*o=.      |
| o  o.E @        |
|  .. +.  *.      |
+----[SHA256]-----+

2.2 Copy key lên ubuntu 20.04 server

Sau khi đã tạo được cặp key pair trên client thì việc tiếp theo cần làm đó chính là copy key public lên trên server để có thể sử dụng nó.

Vấn đề copy public key lên server thì ta có 2 phương pháp có thể thực hiện nó.
1 : Là ta sử dụng thủ công. Ta sẽ đọc file public key rồi đăng nhập và server tạo ra file để lưu trữ nội dung ta copy vào
2: Là ta sẻ dụng lệnh ssh-copy-id và ở đây tôi sử dụng phương án thứ 2 này

Cú pháp của lệnh này là

ssh-copy-id username@remote_host

Áp dụng vào trong bài của tôi thì tôi sẽ có lệnh như sau

ssh-copy-id thuctap@10.10.34.132

Bạn sẽ nhận được output như sau

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '10.10.34.132 (10.10.34.132)' can't be established.
ECDSA key fingerprint is SHA256:sX0/yJcS8RURkYnc1xgQbVyoOrHxxOnCX1vCPC+Sp3g.
ECDSA key fingerprint is MD5:cf:bd:ea:12:72:f9:ca:0c:b5:c3:de:8a:76:4e:47:45.
Are you sure you want to continue connecting (yes/no)? yes

Hỏi xem bạn có thật sự muốn tiếp tục kết nối tới server không. chắc chắn rồi vì chúng ta đang làm việc đó nên sẽ chọn yes

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
thuctap@10.10.34.132's password:

Tiếp theo bạn cần nhập password để có thể copy được nó vào server này

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'thuctap@10.10.34.132'"
and check to make sure that only the key(s) you wanted were added.

Và sau khi nhập password xong. Bước này hoàn thành và bạn nhaajnd dược thông báo như trên .

2.3 Kiểm tra lại việc ssh

Ta sẽ thực hiện lệnh ssh để có thể kiểm tra xem việc ssh bằng key có được thực hiện hay không nhé

ssh thuctap@10.10.34.132

Sau khi thực hiện lệnh ssh thì ta nhận được output như bên dưới. Và đương nhiên ta sẽ không còn phải nhập password vẫn có thể remote được server.

[root@client ~]# ssh thuctap@10.10.34.132
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-26-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Sun 26 Apr 2020 03:52:11 PM UTC

  System load:  0.0                Processes:             107
  Usage of /:   13.9% of 29.40GB   Users logged in:       1
  Memory usage: 10%                IPv4 address for ens3: 10.10.34.132
  Swap usage:   0%

 * Ubuntu 20.04 LTS is out, raising the bar on performance, security,
   and optimisation for Intel, AMD, Nvidia, ARM64 and Z15 as well as
   AWS, Azure and Google Cloud.

     https://ubuntu.com/blog/ubuntu-20-04-lts-arrives


3 updates can be installed immediately.
0 of these updates are security updates.
To see these additional updates run: apt list --upgradable

Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings


Last login: Sun Apr 26 15:13:56 2020 from 10.10.34.1
thuctap@ubuntu:~$ 

3. Disable ssh password và user root

Sau khi có thể sử dụng ssh bằng key để đăng nhập và điều khiển remote được server bằng máy tính của chúng ta thì đương nhiên việc ssh bằng password là điều không còn cần thiết nữa.

Công việc tiếp theo của ta sẽ là disable chức năng có thể ssh bằng password của server. Và user root là một user rất nhạy cảm nên ta sẽ disable luôn chức năng ssh từ xa của nó . Và các bước sau ta thực hiện ở trên ubuntu 20.04 server nhé

sudo vi /etc/ssh/sshd_config

Sau khi đăng nhập xong vào file thì ta tìm đến hai dòng là

#PasswordAuthentication yes 
#PermitRootLogin prohibit-password

và ta sẽ sửa 2 dòng đó như sau. Sau khi sử xong thì ta lưu lại và thử ssh lại một lần nữa

PasswordAuthentication no
PermitRootLogin no

Sau đó ta khởi động lại dịch vụ ssh

sudo systemctl restart sshd

Và rồi ta thử lại ssh bằng password ta sẽ nhận được output như sau

ssh thuctap@10.10.34.132
thuctap@10.10.34.132: Permission denied (publickey)

Vậy là đã hoàn thành được vấn đề làm sao để ta có thể bảo vệ được password khi mà ta ssh tới remote server. Chúc các bạn thành công trong việc cài đặt nhé!