NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
22/08/2024
Lượt xem

Sử dụng thành thạo lệnh ssh trong Linux qua 18 ví dụ hữu ích

22/08/2024
36 phút đọc
Lượt xem

Đánh giá

Lệnh ssh là công cụ không thể thiếu để kết nối và quản lý các máy tính khác từ xa trong hệ điều hành Linux. Để giúp bạn hiểu rõ về công cụ này, bài viết dưới đây sẽ giới thiệu chi tiết cách sử dụng lệnh ssh trong Linux thông qua các ví dụ cụ thể.

Lệnh ssh trong Linux là gì?

SSH (viết tắt của Secure Shell) là một giao thức mạng cho phép kết nối an toàn qua mạng không an toàn. Giao thức được phát triển bởi Tatu Ylonen vào năm 1995 để thay thế Telnet – một giao thức dễ bị tấn công. Lệnh ssh trong Linux sử dụng giao thức SSH nhằm đăng nhập và thực thi các lệnh trên server từ xa an toàn với tất cả dữ liệu được mã hóa.

Lệnh ssh trong Linux
Lệnh ssh trong Linux

Cú pháp của lệnh ssh trên Linux có đôi chút khác biệt, tuy nhiên bạn vẫn có thể sử dụng nhiều tùy chọn khác nhau. Cú pháp cơ bản như sau:

ssh [OPTION]... username@ip_address

Lưu ý:

    • [OPTION]…: Cho phép bạn thêm một hoặc nhiều tùy chọn cho lệnh ssh.

    • username: Tên đăng nhập của bạn trên máy chủ mà bạn muốn kết nối.

    • ip_address: Địa chỉ IP của máy chủ.

6 tùy chọn sử dụng lệnh ssh trong Linux

Lệnh ssh có vô vàn tùy chọn cho bạn lựa chọn. Để xem danh sách đầy đủ, bạn có thể gõ lệnh man dưới đây vào Terminal: 

man ssh
Tùy chọnMô tả
-4Chỉ sử dụng địa chỉ IPv4
-6Chỉ sử dụng địa chỉ IPv6
-CNén dữ liệu để tăng tốc độ kết nối
-iĐăng nhập bằng mã khóa riêng tư (private key) thay vì mật khẩu
-lChỉ định một tài khoản người dùng
-pChỉ định cổng kết nối port

Lưu ý: Các tùy chọn trong Linux CLI phân biệt chữ hoa và thường, vì vậy hãy nhập chính xác.

3 bước thiết lập server để thực hiện lệnh ssh

Bạn sẽ cần một máy tính làm server và một máy tính làm client để kết nối cả 2 bằng lệnh ssh trong Linux. Trong bài viết này, bạn sẽ cần sử dụng 3 thiết bị chính:

  • Một máy ảo Ubuntu chạy trên VMware Workstation làm server.
  • Một máy tính Windows 10 làm client.
  • Windows PowerShell để kết nối tới server. 

Lưu ý: Vì sao sử dụng Windows thay vì Linux?

Thực tế, lệnh ssh và tất cả tùy chọn của lệnh này đều hoạt động tốt trên Windows. Bạn có thể thực hiện những thao tác trong bài viết này tương tự trên Linux server và Linux client. Do đó, thật dễ dàng để bắt đầu thiết lập server của riêng bạn.

Bạn hãy thực hiện theo các bước dưới đây:

Bước 1: Mở cửa sổ terminal trên Ubuntu.

Bước 2: Gõ lệnh sau vào command prompt và nhấn phím Enter:

sudo apt-get install openssh-server

Bạn sẽ thấy kết quả như bên dưới, hãy đợi cho đến khi quá trình cài đặt hoàn tất.

Thiết lập server để thực hiện lệnh ssh
Thiết lập server để thực hiện lệnh ssh

Bước 3: Server có thể tự khởi động. Nếu không, hãy bắt đầu quá trình này và kiểm tra trạng thái bằng 2 lệnh:

sudo service ssh start

sudo service ssh status

Kết quả hiển thị active (running) cho biết server đã sẵn sàng.

Kết quả active (running) cho biết server đã sẵn sàng
Kết quả active (running) cho biết server đã sẵn sàng

Bước 4: Bây giờ để truy cập một server thì bạn sẽ cần địa chỉ IP của server đó. Tìm địa chỉ IP bằng cách nhập lệnh dưới đây và nhấn Enter:

ifconfig

Bạn sẽ thấy địa chỉ IP hiển thị sau từ khóa inet.

địa chỉ IP hiển thị sau từ khóa inet
Địa chỉ IP hiển thị sau từ khóa inet

Nếu thiếu lệnh ifconfig, bạn sử dụng lệnh dưới đây để cài đặt:

sudo apt-get install net-tools

Bạn sẽ thấy kết quả tương tự trên terminal.

Kết quả tương tự trên terminal
Kết quả tương tự trên terminal

Ví dụ 1: Kết nối đến server bằng lệnh ssh

Ở phần trước, bạn đã biết cách xác định địa chỉ IP của server. Bây giờ, bạn sẽ tìm hiểu cách truy cập máy chủ đó bằng lệnh ssh trên hệ điều hành Linux.

Nếu thực thi lệnh whoami trên server, bạn sẽ nhận được tên người dùng là walid. Để kiểm tra xem khi kết nối từ xa thì có phải đang sử dụng đúng tài khoản walid này không, ta thực hiện theo các bước sau đây:

Bước 1: Mở cửa sổ powershell trên Windows.

Bước 2: Gõ lệnh sau vào command prompt và nhấn phím Enter:

ssh walid@192.168.235.129

Lưu ý: Trong lệnh trên, walid là tên người dùng (có thể khác nhau tùy máy chủ). Phần số sau ký tự @ là địa chỉ IP của server bạn muốn kết nối.

Bước 4: Nhập yes nếu đây là lần đầu bạn kết nối tới server và ấn Enter.

Bước 5: Tiếp theo, nhập mật khẩu tương ứng với tên người dùng và ấn Enter.

Kết quả: Bạn sẽ nhận được kết quả tương tự như hình dưới. Terminal được khởi động với người dùng walid@Ubuntu giống như server. Khi chạy lệnh whoami, hệ thống sẽ trả về kết quả là walid, giống như trên server. Giờ đây, bạn có thể quản lý server từ bất kỳ vị trí nào trên thế giới.

Khi chạy lệnh whoami, hệ thống sẽ trả về kết quả là walid, giống như trên server
Khi chạy lệnh whoami, hệ thống sẽ trả về kết quả là walid, giống như trên server

Ví dụ 2: Sử dụng lệnh SSH để chạy trên server

Trong ví dụ này, mình sẽ hướng dẫn các bạn cách dùng lệnh ssh để tạo và xem nội dung một file trên máy chủ Linux, ngay từ máy tính cá nhân của bạn.

Hãy thực hiện theo theo các bước dưới đây:

Bước 1: Mở cửa sổ powershell trên Windows.

Bước 2: Đăng nhập vào server (thực hiện như ví dụ 1).

Bước 3: Gõ lệnh sau vào command prompt và nhấn phím Enter:

echo “Welcome from the local machine!” > welcome

Lưu ý: Lệnh này sẽ tạo ra một file có tên welcome với nội dung “Welcome from the local machine!“.

Bước 4: Mở cửa sổ terminal trên Ubuntu.

Bước 5: Gõ lệnh sau vào command prompt và nhấn phím Enter:

cat welcome

Lưu ý: Lệnh này sẽ hiển thị nội dung của file welcome.

Kết quả: Hình ảnh bên dưới là từ Windows PowerShell. Ở đây, output của lệnh echo được chuyển hướng vào file welcome. 

Windows PowerShell - output của lệnh echo được chuyển hướng vào file welcome
Windows PowerShell. Ở đây, output của lệnh echo được chuyển hướng vào file welcome

Tiếp theo, kiểm tra file welcome từ server và bạn sẽ thấy rằng file này có nội dung tương tự.

 Kiểm tra file welcome từ server và bạn sẽ thấy rằng file này có nội dung tương tự
Kiểm tra file welcome từ server và bạn sẽ thấy rằng file này có nội dung tương tự

Ví dụ 3: Thực hiện lệnh không cần tạo Shell bằng lệnh ssh

Trong ví dụ này, bạn sẽ tiến hành chạy một lệnh mà không tạo Shell. Mình sẽ tạo một thư mục mới từ máy tính client và kiểm tra kết quả trên máy chủ.

Bạn hãy thực hiện theo theo các bước dưới đây:

Bước 1: Mở cửa sổ powershell trên Windows.

Bước 2: Gõ lệnh sau vào command prompt và nhấn phím Enter:

ssh walid@192.168.235.129 mkdir newdirectory

Lưu ý: Lệnh mkdir dùng để tạo một thư mục mới trên máy chủ.

Bước 4: Nhập mật khẩu khi được yêu cầu và nhấn Enter.

Bước 5: Mở cửa sổ terminal trên Ubuntu.

Bước 6: Gõ lệnh ls cú pháp như sau vào command prompt và nhấn phím Enter:

ls

Lưu ý: Lệnh ls sẽ liệt kê các file và thư mục trong thư mục “newdirectory” vừa tạo.

Kết quả: Như vậy, bạn đã gửi một lệnh mà không cần đăng nhập vào server. Lúc này, một thư mục mới newdirectory đã được tạo trong trong thư mục home.

Mục mới newdirectory được tạo trong thư mục home
Thư mục mới newdirectory được tạo trong thư mục home

Tiếp theo, khi liệt kê tất cả nội dung trong thư mục home, bạn có thể thấy newdirectory đã nằm trong đó.

Newdirectory nằm trong thư mục đã được tạo
Newdirectory nằm trong thư mục đã được tạo

Ví dụ 4: Sử dụng lệnh để đăng nhập với tên người dùng khác 

Tùy chọn -l của lệnh ssh trong Linux được dùng để chỉ định một tên người dùng. Giả sử server của bạn có một tên người dùng khác là jim, bạn có thể làm theo các bước sau: 

Bước 1: Mở cửa sổ powershell trên Windows.

Bước 2: Gõ lệnh sau vào command prompt và nhấn phím Enter:

ssh -l jim 192.168.235.129

Kết quả: Sau khi chạy lệnh, bạn sẽ đăng nhập thành công vào tài khoản jim và trên màn hình Terminal đang hiển thị “jim@Ubuntu“, tương tự như trên server.

Sử dụng lệnh để đăng nhập với tên người dùng khác 
Sử dụng lệnh để đăng nhập với tên người dùng khác 

Ví dụ 5: Thực hiện lệnh ssh để thay đổi port của server

Thông thường, khi kết nối từ xa vào máy chủ qua SSH, bạn sẽ sử dụng cổng mặc định là 22. Tuy nhiên, để tăng tính bảo mật và linh hoạt, bạn hoàn toàn có thể đổi sang cổng khác. Cổng mới là bất kỳ số nào bạn muốn, nhưng tốt nhất bạn nên chọn số lớn hơn 1024.

Ở đây, mình sẽ sử dụng port 3017 làm ví dụ. Hãy thực hiện theo từng bước dưới đây:

Bước 1: Nhấn CTRL + ALT + T để mở cửa sổ terminal trên Ubuntu.

Bước 2: Gõ lệnh sudo theo cú pháp sau vào command prompt và nhấn phím Enter:

sudo nano /etc/ssh/sshd_config

Lưu ý: Bạn có thể được yêu cầu nhập mật khẩu.

Bước 3: Tìm và sửa, hoặc bạn có thể thêm một dòng mới như cú pháp dưới đây:

port 3017

Bước 4: Khởi động lại server bằng cách nhập lệnh sau và nhấn Enter:

sudo service ssh restart

Bước 5: Kích hoạt firewall (tường lửa) và mở quyền truy cập cho port 3017 bằng cách nhập 2 lệnh sau và nhấn Enter:

sudo ufw enable

sudo ufw allow 3017

Bước 6: (Tùy chọn) Kiểm tra trạng thái của port 3017 bằng lệnh:

sudo ufw status

Bước 7: (Tùy chọn) Kiểm tra xem cổng ssh đã hoạt động chưag bằng lệnh netstat sau:

netstat -tulnp

Kết quả: Hình ảnh sửa đổi file sshs_config sẽ tương tự như sau:

Thực hiện lệnh ssh thay đổi port của server
Thực hiện lệnh ssh thay đổi port của server

Hình ảnh hiển thị sẽ cho thấy quá trình thực hiện các lệnh. Từ ufw status, bạn có thể thấy port 3017 đang hoạt động. 

Quá trình thực hiện các lệnh
Quá trình thực hiện các lệnh và 3107 đang hoạt động

Cuối cùng, bạn sẽ thấy trên màn hình server đang chờ kết nối trên port 3017.

Server đang chờ kết nối trên 307
Server đang chờ kết nối trên 3017

Ví dụ 6: Kết nối tới một server bằng cổng tùy chỉnh

Ở ví dụ 5, bạn đã biết cách tạo một port mới. Tiếp theo, bạn sẽ tìm hiểu cách kết nối đến server thông qua port này bằng lệnh ssh với tùy chọn -p. Để thực hiện, bạn hãy làm theo các bước dưới đây:

Bước 1: Mở cửa sổ powershell trên Windows.

Bước 2: Gõ lệnh sau vào PowerShell và nhấn phím Enter:

ssh -p 3017 walid@192.168.235.129

Bước 3: Nhập mật khẩu và nhấn phím Enter.

Kết quả: Như vậy, bạn đã đăng nhập thành công vào server thông qua port 3017.

Đăng nhập vào Server thành công thông qua Port 3107
Đăng nhập vào Server thành công thông qua Port 3107

Ví dụ 7: Thực hiện sao chép file bằng lệnh scp

Lệnh scp (viết tắt của secure copy) đây là công cụ lưu truyền file an toàn giữa client và server thông qua giao thức SSH. Ở ví dụ này, bạn sẽ thực hiện copy file thông qua scp.

Giả sử bạn có một file tên là local_file trên client (hệ điều hành Windows) và một file là remote_file trên server (hệ điều hành Ubuntu).

File tên local_file trên client (Windows)
File tên local_file trên client (thuộc hệ điều hành Windows)
File mới là remote được tạo thành trên Server
File mới tên remote file được tạo thành trên server (thuộc hệ điều hành Ubuntu)

Ở ví dụ này, mục tiêu của bạn là copy local_file vào server và remote_file vào client. Hãy làm theo các bước dưới đây:

Bước 1: Nhấn phím Windows + R, sau đó nhập powershell và nhấn Enter để mở Windows Powershell.

Bước 2: Gõ lệnh sau vào command prompt để copy file từ client vào server:

scp D:\Local_machine\local_file walid@192.168.235.129:~

Lưu ý: Dấu \ là dấu phân cách thư mục trong Windows. Và dấu ~ biểu thị thư mục home trong Linux.

Bước 3: Nhập mật khẩu và nhấn Enter.

Bước 4: Gõ lệnh scp theo cú pháp sau vào command prompt để copy file từ server vào client:

scp walid@192.168.235.129:~/remote_file D:\Local_machine

Bước 5: Nhập mật khẩu và nhấn Enter một lần nữa.

Kết quả: Ban đầu, bạn sao chép local_file lên server. Đó là lý do tại sao họ cung cấp đường dẫn file trong Windows trước, sau đó là đường dẫn đích của file đó. Tương tự với việc sao chép file remote_file lên client, vị trí file trên server sẽ hiển thị trước, sau đó mới là địa chỉ đích. Kết quả hiển thị trên màn hình 100% cho biết quá trình chuyển file được thực hiện hoàn tất.

Quá trình chuyển file được thực hiện hoàn tất
Quá trình chuyển file được thực hiện hoàn tất

Bây giờ, bạn có thể thấy có một file local_file nằm trong thư mục home của server và file remote_file nằm trên client Windows.

File Local_file nằm trong thư mục Server
File Local_file nằm trong thư mục Server
File remote_file nằm trên client Windows
File remote_file nằm trên client Windows

Ví dụ 8: Sao chép file bằng giao thức sftp

Tiếp theo, bạn đã tìm hiểu một phương pháp sao chép file khác là Sftp (Secure File Transfer Protocol). Đây là giao thức truyền file an toàn khá giống với ftp nhưng sử dụng giao thức SSH để truyền file an toàn hơn.

Trong ví dụ này, bạn cần sao chép một file có tên local_file lên server và remote_file từ server sang client.

Giả sử, hiện tại bạn có một file tên là local_file trên client (hệ điều hành Windows) và một file là remote_file trên server (hệ điều hành Ubuntu).

Sao chép file bằng giao thức sftp
Sao chép file bằng giao thức sftp
File remote_file nằm trên server (Ubuntu)
File remote_file nằm trên server (Ubuntu)

Bạn hãy thực hiện theo các bước dưới đây:

Bước 1: Mở cửa sổ powershell trên Windows.

Bước 2: Gõ lệnh sau vào PowerShell:

sftp walid@192.168.235.129

Bước 3: Nhập mật khẩu và nhấn Enter.

Bước 4: Gõ lệnh sau vào command prompt để copy file từ client vào server và nhấn Enter:

put D:\Local_machine\local_file

Lưu ý: Dấu \ là dấu phân cách thư mục trong Windows.

Bước 4: Gõ lệnh sau vào command prompt để copy file từ server vào client và nhấn Enter:

get remote_file D:\Local_machine

Bước 4: Gõ lệnh sau vào command prompt để thoát:

exit

Tại đây: bạn thiết lập một kết nối tới server. Sau đó, sử dụng lệnh put để sao chép file lên server và lệnh get để sao chép file từ server lên client. 

sử dụng lệnh put để sao chép file lên server và lệnh get để sao chép file từ server lên client
Sử dụng lệnh put để sao chép file lên server và lệnh get để sao chép file từ server lên client

Bạn có thể thấy có một file tên local_file nằm trong thư mục home của server (Ubuntu) và file remote_file nằm trên client Windows.

local_file nằm trong thư mục home của server (Ubuntu)
Local_file nằm trong thư mục home của server (Ubuntu)
file remote_file nằm trên client Windows
File có tên remote_file nằm trên client Windows

Ví dụ 9: Tạo mã khóa public và private bằng ssh-keygen

Với lệnh ssh, bạn có thể sử dụng cặp mã khóa SSH (public và private key) để kết nối tới server ngoài việc sử dụng mật khẩu. Trong ví dụ này, bạn sẽ cần tạo cặp mã khóa SSH bằng lệnh ssh-keygen.

Bạn hãy thực hiện theo các bước dưới đây:

Bước 1: Mở cửa sổ powershell trên Windows.

Bước 2: Gõ lệnh sau vào command prompt và nhấn phím Enter:

ssh-keygen -f D:\Local_machine\mykey

Lưu ý:

  • mykey là tên của file khóa sẽ được tạo.
  • -f: Tạo khóa ở một vị trí nhất định.

Bước 3: Bạn có thể đặt passphrase cho khóa và nhấn Enter.

Bước 4: Nhập lại passphrase và nhấn Enter một lần nữa để xác thực.

Kết quả: Sau khi thực hiện lệnh, bạn sẽ nhận được kết quả hiển thị như hình:

Tạo mã khóa public - private key bằng ssh-keygen
Tạo mã khóa public và private key bằng ssh-keygen

Bây giờ, bạn có 2 khóa đã được tạo ở vị trí chỉ định. Trong đó, file mykey là khóa riêng tư còn file mykey.pub là khóa công khai.

2 khóa đã được tạo ở vị trí chỉ định
2 khóa my key và mykey.pub đã được tạo ở vị trí chỉ định

Ví dụ 10: Sử dụng lệnh ssh để chuyển file public key lên server

Ở ví dụ trước, bạn đã tạo ra 2 cặp khóa. Public Key cần được đặt trên server và private key đặt trên client. Bạn có thể lưu trữ 2 cặp khóa ở bất kỳ vị trí nào. Nhưng mặc định trên Linux, Public Key sẽ được lưu trữ trong thư mục .ssh của thư mục home.

Trong ví dụ này, bạn cũng sẽ lưu trữ Public Key ở vị trí đó.

Lưu ý: Thư mục .ssh cần được thiết lập bảo mật cao.

Nhằm đảm bảo bảo mật an toàn, bạn cần giới hạn quyền truy cập vào thư mục .ssh cho chủ sở hữu (người dùng có quyền truy cập root). Trên Ubuntu, hãy mở Terminal và nhập lệnh chmod với cú pháp như sau:

chmod 700 ~/.ssh

Ngoài ra, Linux còn cung cấp một lệnh để gửi khóa công khai lên server như sau:

ssh-copy-id -i /path_of_the_public_key walid@192.168.235.129

Tuy nhiên, Windows PowerShell không có lệnh tương tự. Do đó, lúc này bạn cần sử dụng lệnh scp để gửi file public key. 

Hãy thực hiện theo các bước sau:

Bước 1: Nhấn tổ hợp phím Windows + R, nhập “powershell” và nhấn Enter để mở Windows PowerShell.

Bước 2: Gõ lệnh sau vào command prompt và nhấn phím Enter:

scp D:\Local_machine\mykey.pub walid@192.168.235.129:~/.ssh

Bước 3: Gõ yes và nhấn Enter (nếu được yêu cầu).

Bước 4: Nhập mật khẩu và nhấn Enter.

Bước 5: Xóa file public key khỏi client.

Bước 6: Mở cửa sổ terminal trên Ubuntu, nhập lệnh sau và nhấn Enter:

sudo service ssh restart

Kết quả: Trong Powershell, bạn sẽ thấy thông báo 100% thì file đã được sao chép thành công.

File đã được sao chép thành công
File đã được sao chép thành công

Trên Ubuntu, trong thư mục .ssh sẽ có một file mới tên là mykey.pub.

File mới xuất hiện trong thư mục SSH
File mới xuất hiện trong thư mục SSH

Cuối cùng, bạn đừng quên xóa file public key khỏi client.

Xóa file public key khỏi client
Xóa file public key khỏi client

Ví dụ 11: Kích hoạt xác thực dựa trên cặp mã khóa

Để đăng nhập bằng cặp khóa private và public key, bạn cần kích hoạt cả 2 key trên server. Trong ví dụ này, bạn sẽ cần thực hiện kích hoạt xác thực dựa trên khóa bằng cách chỉnh sửa file sshd_config. Hãy thực hiện theo các bước sau:

Bước 1: Nhấn CTRL + ALT + T để mở cửa sổ terminal trên Ubuntu.

Bước 2: Nhập lệnh sau vào Terminal và nhấn Enter:

sudo nano /etc/ssh/sshd_config

Bước 3: Tìm và chỉnh sửa hoặc thêm dòng sau vào file:

PubkeyAuthentication yes

Bước 4: Nhấn CTRL + O, sau đó Y để lưu file và CTRL + X để thoát.

Bước 5: Chạy lệnh sau để khởi động lại dịch vụ ssh và nhấn Enter:

sudo service ssh restart

Lưu ý: Cách chỉnh sửa file sshd_config tương tự như hình dưới.

Kích hoạt xác thực dựa trên cặp mã khóa
Kích hoạt xác thực dựa trên cặp mã khóa

Tương tự, bạn sẽ thực hiện chạy các lệnh trong Terminal như hình sau.

Cách chạy các lệnh trong Terminal
Cách chạy các lệnh trong Terminal

Ví dụ 12: Sử dụng cặp khóa public và private key để kết nối server

Cuối cùng, bạn sẽ truy cập server bằng cặp khóa public – private key với lệnh ssh trên Linux. Tùy chọn -i được sử dụng để cung cấp đường dẫn tới private key. Hãy làm theo các bước dưới đây:

Bước 1: Mở cửa sổ poweshell trên Windows.

Bước 2: Gõ lệnh sau vào command prompt và nhấn phím Enter:

ssh -i D:\Local_machine\mykey walid@192.168.235.129

Bước 3: Nhập passphrase cho khóa và nhấn Enter.

Bước 4: Tiếp theo, nhập mật khẩu đăng nhập và nhấn Enter.

Kết quả: Giờ đây bạn đã có thể sử dụng private key và passphrase để đăng nhập vào server.

Sử dụng private key và passphrase để đăng nhập vào server.
Sử dụng private key và passphrase để đăng nhập vào server.

Ví dụ 13: Kích hoạt xác thực quyền truy cập bằng mã khóa

Nếu bạn muốn cho phép truy cập server thông qua cặp khóa thì bạn cần chỉnh sửa file cấu hình .sshd_config và vô hiệu hóa phương pháp xác thực dựa trên mật khẩu. Đồng thời, bạn cũng cần thêm public key vào file authorized_keys

Hãy làm theo các bước dưới đây:

Bước 1: Mở cửa sổ powershell trên Windows.

Bước 2: Gõ lệnh cat vào command prompt và nhấn phím Enter:

cat ~/.ssh/mykey.pub >> ~/.ssh/authorized_keys

Lưu ý: Lệnh này sẽ thêm public key vào file authorized_keys. Nếu file chưa tồn tại thì lệnh sẽ tạo một file mới.

Bước 3: Gõ lệnh sau vào command prompt và nhấn phím Enter:

sudo nano /etc/ssh/sshd_config

Bước 4: Chỉnh sửa file thành tương tự như sau:

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

PasswordAuthentication no

ChallengeResponseAuthentication no

Bước 5: Nhấn CTRL + O, sau đó nhấn Y để lưu file và CTRL + X để thoát.

Bước 6: Khởi động lại dịch vụ ssh bằng cách nhập lệnh sau và nhấn Enter:

sudo service ssh restart

Kết quả: Command prompt sẽ tương tự như sau:

Kích hoạt xác thực quyền truy cập bằng mã khóa
Kích hoạt xác thực quyền truy cập bằng mã khóa

Tiếp theo là cách chỉnh sửa file .sshd_config. Nếu thấy những dòng này đã có sẵn trong file, bạn chỉ cần chỉnh sửa lại. Nhưng cũng có lúc bạn phải tự thêm các dòng này vào.

Cách chỉnh sửa file .sshd_config
Cách chỉnh sửa file .sshd_config

Nếu muốn bật lại xác thực dựa trên mật khẩu, bạn cần đặt giá trị yes cho dòng PasswordAuthentication.

Nếu muốn bật lại xác thực dựa trên mật khẩu, bạn cần đặt giá trị yes cho dòng PasswordAuthentication
Nếu muốn bật lại xác thực dựa trên mật khẩu, bạn cần đặt giá trị yes cho dòng PasswordAuthentication

Bây giờ, khi đăng nhập vào máy chủ, hệ thống chỉ yêu cầu nhập passphrase cho key.

Bây giờ, khi đăng nhập vào máy chủ, hệ thống chỉ yêu cầu nhập passphrase cho key
Bây giờ, khi đăng nhập vào máy chủ, hệ thống chỉ yêu cầu nhập passphrase cho key

Ví dụ 14: Kích hoạt nén dữ liệu bằng lệnh ssh

Lệnh ssh trên Linux hỗ trợ khả năng nén dữ liệu trong quá trình truyền tải. Tính năng này đặc biệt hữu ích khi kết nối internet kém ổn định. Để kích hoạt nén dữ liệu, bạn sử dụng lệnh ssh với tùy chọn -C.

Hãy làm theo các bước dưới đây:

Bước 1: Mở cửa sổ powershell trên Windows.

Bước 2: Gõ lệnh sau vào command prompt và nhấn phím Enter:

ssh -C walid@192.168.235.129

Kết quả: Quá trình đăng nhập với tùy chọn -C diễn ra tương tự như đăng nhập thông thường. Bạn sẽ được yêu cầu nhập passphrase và mật khẩu như thường lệ.

Gửi dữ liệu nén bằng lệnh ssh
Gửi dữ liệu nén bằng lệnh ssh

Ví dụ 15: Sử dụng lệnh để bật chế độ chi tiết (Verbose Mode) 

Tùy chọn -v trong lệnh ssh trên Linux được sử dụng để hiển thị thông tin chi tiết trong quá trình kết nối đến một server. Tính năng này rất hữu ích trong việc xác định nguyên nhân sự cố. Bạn có thể điều chỉnh mức độ chi tiết của thông tin được hiển thị thông qua việc sử dụng tham số -v hoặc -vvv.

Để thực hiện, làm theo các bước dưới đây:

Bước 1: Mở cửa sổ powershell trên Windows.

Bước 2: Gõ lệnh sau vào command prompt và nhấn phím Enter:

sudo -v walid@192.168.235.129

Kết quả: Bạn sẽ thấy toàn bộ quá trình kết nối được mô tả chi tiết từng bước tương tự như hình dưới.

Toàn bộ quá trình kết nối được mô tả chi tiết
Toàn bộ quá trình kết nối được mô tả chi tiết

Ví dụ 16: Tạo một nội dung cảnh bảo khi đăng nhập

Trong ví dụ này, bạn sẽ tìm hiểu cách thiết lập nội dung cảnh báo (banner message), thông báo này sẽ hiển thị khi ai đó cố gắng đăng nhập vào server bằng lệnh ssh trong Linux. Để thực hiện, bạn cần chỉnh sửa file .sshd_config theo các bước dưới đây:

Bước 1: Nhấn CTRL + ALT + T để mở cửa sổ terminal trên Ubuntu.

Bước 2: Gõ lệnh echo theo cú pháp sau vào command prompt để tạo một file chứa banner thông báo:

echo “WELCOME TO OUR SERVER” >> banner_message

Lưu ý: Ở đây banner_message là tên của file.

Bước 3: Sử dụng lệnh dưới đây để mở file .sshd_config:

sudo nano /etc/ssh/sshd_config

Bước 4: Chỉnh sửa file .sshd_config như bên dưới:

Banner /home/walid/banner_message

Lưu ý: Cung cấp đường dẫn file từ thư mục root, không phải thư mục home.

Bước 5: Nhấn CTRL + OY để lưu file và CTRL + X để thoát.

Bước 6: Bây giờ khởi động lại dịch vụ ssh bằng cách gõ lệnh sau và nhấn Enter:

sudo service ssh restart

Kết quả: Các lệnh cần chạy trong command prompt sẽ tương tự như sau:

Các lệnh cần chạy trong command prompt
Các lệnh cần chạy trong command prompt

Bạn sẽ thực hiện chỉnh sửa file .sshd_config tương tự như hình:

 Chỉnh sửa file .sshd_config
Chỉnh sửa file .sshd_config

Sau đó, khi thử đăng nhập vào server, thông báo WELCOME TO OUR SERVER sẽ hiển thị như hình bên dưới:

Thông báo WELCOME TO OUR SERVER sẽ hiển thị
Thông báo WELCOME TO OUR SERVER sẽ hiển thị

Ví dụ 17: Vô hiệu hóa đăng nhập root để tăng bảo mật

Ví dụ, bạn cần tắt tính năng đăng nhập bằng root (quyền truy cập admin) để tăng bảo mật cho server. Để thực hiện, bạn cần chỉnh sửa file .sshd_config và sau đó khởi động lại dịch vụ ssh. 

Hãy làm theo các bước dưới đây:

Bước 1: Mở cửa sổ terminal trên Ubuntu.

Bước 2: Gõ lệnh dưới đây vào Terminal:

sudo nano /etc/ssh/sshd_config

Bước 3: Chỉnh sửa file tương tự như sau:

PermitRootLogin no

Bước 4: Lưu và thoát file bằng cách nhấn CTRL + X rồi Enter.

Bước 5: Tiếp tục gõ lệnh sau và nhấn Enter:

sudo service ssh restart

Kết quả: Lệnh đầu tiên trong hình dưới dùng để mở file .sshd_config và lệnh thứ 2 được dùng để khởi động lại dịch vụ ssh. 

Sử dụng lệnh mở file .sshd_config
Sử dụng lệnh mở file .sshd_config

Trong quá trình chỉnh sửa file, bạn sẽ thấy hầu hết các lệnh đã tồn tại sẵn. Bạn chỉ cần xóa dấu thăng (#) ở đầu dòng. 

Xóa dấu thăng (#) ở đầu dòng khi thực hiện.
Xóa dấu thăng (#) ở đầu dòng khi thực hiện.

Cuối cùng, khi thử đăng nhập với tư cách người dùng root, thông báo “Permission denied” sẽ hiển thị.

đăng nhập với tư cách người dùng root, thông báo “Permission denied” sẽ hiển thị
Đăng nhập với tư cách người dùng root, thông báo “Permission denied” sẽ hiển thị

Ví dụ 18: Truy cập từ xa vào server của bạn bằng lệnh ssh

Ví dụ này bạn sẽ cần truy cập vào server của mình từ xa. Tuy nhiên, hãy cẩn thận vì việc để lộ server có thể dẫn đến những vấn đề bảo mật không mong muốn.

Để thực hiện, server cần có một địa chỉ IP riêng. Bạn sẽ phải cần cài đặt cấu hình kết nối mạng của Ubuntu thành chế độ Bridged thay vì NAT trong phần cài đặt của VMware Workstation và mở port 22 trên tường lửa Windows để cho phép kết nối.

Lưu ý: Nếu đang sử dụng router, bạn sẽ cần chuyển tiếp port 22 để cho phép các kết nối từ bên ngoài mạng LAN. Ngoài ra, hãy sử dụng VPN để tăng cường bảo mật cho server của bạn.

Hãy làm theo các bước dưới đây:

Bước 1: Mở VMware Workstation.

Bước 2: Nhấp vào Ubuntu > VM > Settings.

Bước 3: Sau đó nhấp vào mục Network Adapter và đặt Network Connection thành Bridged.

Bước 4: Mở command prompt từ menu Start Windows với quyền quản trị viên.

Bước 5: Gõ lệnh sau để thêm một rule mới cho phép kết nối thông qua port 22 và nhấn Enter:

netsh advfirewall firewall add rule name="OpenSSH" dir=in action=allow protocol=TCP localport=22

Bước 6 (Tùy chọn): Để xóa rule bất kỳ lúc nào, gõ lệnh sau và nhấn Enter:

netsh advfirewall firewall delete rule name="OpenSSH" protocol=TCP dir=in localport=22

Kết quả: Các bước thực hiện sẽ tương tự như các hình bên dưới. Đầu tiên, mở phần settings trên Ubuntu server.

Đầu tiên, mở phần settings trên Ubuntu server
Đầu tiên, mở phần settings trên Ubuntu server

Tiếp theo, nhấp vào Network Adapter và đặt kết nối thành Bridged.

Nhấp vào Network Adapter và đặt kết nối thành Bridged
Nhấp vào Network Adapter và đặt kết nối thành Bridged

Sau đó, mở Command Prompt với quyền “Run as administrator” và nhập lệnh ở bước 6 để thêm một rule mới.

 Mở Command Prompt với quyền "Run as administrator" và nhập lệnh ở bước 6 để thêm một rule mới
Mở Command Prompt với quyền “Run as administrator” và nhập lệnh ở bước 6 để thêm một rule mới

Tiếp theo, bạn có thể xóa rule OpenSSH theo cách dưới đây:

Thực hiện xóa rule OpenSSH
Thực hiện xóa rule OpenSSH

Cuối cùng, hãy thử kết nối tới server từ một máy tính khác và kết quả là đăng nhập thành công.

kết nối tới server từ một máy tính khác và kết quả là đăng nhập thành công
Kết nối tới server từ một máy tính khác và kết quả là đăng nhập thành công

Câu hỏi thường gặp

Có thể sử dụng SSH để thực hiện các tác vụ quản lý cơ bản trên máy chủ từ xa như khởi động lại, tắt máy hay kiểm tra trạng thái hệ thống không?

Có thể. SSH cung cấp một giao diện dòng lệnh an toàn để tương tác với máy chủ từ xa, cho phép bạn thực hiện hầu hết các lệnh như khi bạn đang làm việc trực tiếp trên máy đó.

Có thể sử dụng SSH để kết nối đến một máy chủ trên mạng nội bộ từ bên ngoài không?

Có thể. Nhưng việc này đòi hỏi một số cấu hình và cân nhắc về bảo mật trong việc kết nối, quản lý từ xa, truy cập dịch vụ, sao lưu khôi phục dữ liệu.

Có thể sử dụng SSH để kết nối đến một máy chủ Windows từ một máy tính Linux không?

Có. Bạn có thể kết nối SSH đến máy chủ Windows với nhiều mục đích như quản lý từ xa, truy cập các dịch vụ

Lời kết

Trong bài viết này, bạn đã cùng tìm hiểu về lệnh ssh trong Linux và những ứng dụng phổ biến của lệnh này thông qua 18 ví dụ cụ thể, chi tiết. Mong rằng bạn có thể áp dụng công cụ này để kết nối đến server, thực thi lệnh và quản lý hệ thống từ xa một cách an toàn, hiệu quả.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Banner group
Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

Pattern

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG