0

SSH

SSH (Secure Shell) là một giao thức mạng dùng để thiết lập kết nối an toàn giữa hai thiết bị, thường được sử dụng để quản lý từ xa các hệ thống và truyền dữ liệu an toàn qua mạng không tin cậy. SSH thay thế các giao thức không bảo mật như Telnet và FTP bằng cách sử dụng mã hóa để bảo vệ dữ liệu.

Cách hoạt động của SSH

SSH hoạt động theo mô hình client-server, trong đó:

  • Máy chủ SSH (SSH Server) lắng nghe các kết nối từ xa.
  • Máy khách SSH (SSH Client) thực hiện kết nối đến máy chủ bằng giao thức SSH.

Quy trình kết nối:

  • Khởi tạo kết nối: Máy khách gửi yêu cầu kết nối đến máy chủ SSH qua cổng 22 (mặc định).
  • Xác thực danh tính: Máy chủ yêu cầu máy khách xác thực bằng mật khẩu hoặc khóa SSH.
  • Thiết lập phiên mã hóa: Khi xác thực thành công, một kênh mã hóa được thiết lập, đảm bảo dữ liệu truyền giữa hai máy được bảo mật.
  • Giao tiếp an toàn: Máy khách có thể thực thi lệnh trên máy chủ hoặc truyền tệp tin thông qua SSH.

Các phương thức xác thực trong SSH

  • Xác thực bằng mật khẩu: Người dùng nhập tên đăng nhập và mật khẩu để kết nối.
  • Xác thực bằng khóa công khai (Public Key Authentication): Dùng cặp khóa private key - public key, trong đó:
    • Private key lưu trên máy khách.
    • Public key được đặt trên máy chủ.
    • Khi kết nối, máy chủ sử dụng khóa công khai để xác minh khóa riêng của máy khách mà không cần nhập mật khẩu.

Các tính năng chính của SSH

Điều khiển từ xa
SSH cho phép quản trị viên điều khiển máy chủ Linux/Unix từ xa, thực thi các lệnh mà không cần có mặt trực tiếp tại máy chủ.

Chuyển tiếp cổng (Port Forwarding)
SSH có thể chuyển tiếp lưu lượng mạng từ một cổng trên máy khách đến một cổng trên máy chủ, giúp tạo đường hầm an toàn cho các dịch vụ khác như HTTP, FTP, hoặc cơ sở dữ liệu.

Truyền tệp an toàn (SCP & SFTP)
SSH hỗ trợ truyền tệp an toàn qua hai giao thức:

  • SCP (Secure Copy Protocol): Sao chép tệp giữa hai máy sử dụng SSH.
  • SFTP (SSH File Transfer Protocol): Truyền tệp với nhiều tính năng hơn SCP, giống FTP nhưng bảo mật hơn.

Cách sử dụng SSH

Kết nối SSH từ máy khách đến máy chủ
Trên Linux/macOS, sử dụng terminal:

sh

Sao chépChỉnh sửa

ssh user@remote_host

Ví dụ:

sh

Sao chépChỉnh sửa

ssh admin@192.168.1.10

Nếu sử dụng cổng khác (không phải cổng mặc định 22):

sh

Sao chépChỉnh sửa

ssh -p 2222 user@remote_host

Sao chép tệp bằng SCP

sh

Sao chépChỉnh sửa

scp file.txt user@remote_host:/home/user/

Từ máy chủ về máy khách:

sh

Sao chépChỉnh sửa

scp user@remote_host:/home/user/file.txt .

Sử dụng SSH Key Authentication
Tạo cặp khóa:

sh

Sao chépChỉnh sửa

ssh-keygen -t rsa -b 4096

Sao chép khóa công khai lên máy chủ:

sh

Sao chépChỉnh sửa

ssh-copy-id user@remote_host

Sau khi thiết lập, bạn có thể kết nối SSH mà không cần nhập mật khẩu.

SSH Tunneling và Port Forwarding

Local Port Forwarding (Chuyển tiếp cổng cục bộ)
Cho phép truy cập một dịch vụ từ xa thông qua máy tính cục bộ:

sh

Sao chépChỉnh sửa

ssh -L 8080:localhost:80 user@remote_host

Lệnh này ánh xạ cổng 8080 trên máy cục bộ đến cổng 80 trên máy chủ.

Remote Port Forwarding (Chuyển tiếp cổng từ xa)
Cho phép một máy từ xa truy cập vào dịch vụ trên máy khách:

sh

Sao chépChỉnh sửa

ssh -R 9090:localhost:3306 user@remote_host

Lệnh này ánh xạ cổng 9090 trên máy chủ đến cổng 3306 (MySQL) trên máy khách.

Bảo mật SSH

Thay đổi cổng mặc định: Đổi từ cổng 22 sang cổng khác trong /etc/ssh/sshd_config

sh

Sao chépChỉnh sửa

Port 2222

Tắt đăng nhập root qua SSH: Giảm nguy cơ tấn công brute-force.

sh

Sao chépChỉnh sửa

PermitRootLogin no

Chỉ cho phép đăng nhập bằng khóa SSH:

sh

Sao chépChỉnh sửa

PasswordAuthentication no

Hạn chế địa chỉ IP được phép kết nối: Sử dụng firewall như iptables hoặc ufw.

SSH trong Windows

Trên Windows, có thể sử dụng:

  • Windows Terminal / PowerShell: Hỗ trợ SSH từ Windows 10 trở lên.
  • PuTTY: Một phần mềm SSH client phổ biến trên Windows.
  • WinSCP: Hỗ trợ truyền tệp SCP/SFTP trên Windows.

Tổng kết

SSH là giao thức quan trọng trong networking, giúp quản lý hệ thống từ xa và truyền dữ liệu an toàn. Với tính năng mã hóa mạnh mẽ và hỗ trợ nhiều phương thức xác thực, SSH là lựa chọn hàng đầu để thay thế các giao thức không bảo mật như Telnet và FTP.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí