Hướng dẫn kết nối máy chủ từ xa bằng SSH

Ngày đăng: July 17, 2025

SecurityUbuntu

description image

Bắt đầu nhanh: Cách SSH vào máy chủ từ xa trong 5 bước

  1. Mở terminal của bạn.

    • Trên Linux/macOS: Khởi chạy ứng dụng Terminal.
    • Trên Windows: Sử dụng PowerShell, Git Bash, hoặc WSL.
  2. Chạy lệnh SSH:

ssh username@your_server_ip
  1. Xem xét và chấp nhận dấu vân tay host nếu được yêu cầu.

  2. Xác thực bằng mật khẩu hoặc khóa SSH (nếu đã cấu hình).

  3. Bạn đã kết nối!exit để đóng phiên SSH và trở về shell cục bộ.

SSH login via Termius with welcome message Kết nối SSH thành công sử dụng Termius, hiển thị màn hình chào mừng Ubuntu và dấu nhắc shell.

SSH hoạt động như thế nào?

Để kết nối tới hệ thống từ xa bằng SSH, chúng ta sử dụng lệnh ssh.

Nếu bạn dùng Windows, cần cài phiên bản OpenSSH để chạy lệnh ssh từ terminal. Nếu thích PowerShell, bạn có thể theo tài liệu của Microsoft để thêm OpenSSH vào PowerShell. Nếu muốn một môi trường Linux đầy đủ, bạn có thể cài đặt WSL – Windows Subsystem for Linux, mặc định đã có ssh. Ngoài ra, bạn có thể dùng Git for Windows, tạo môi trường bash native trên Windows có sẵn lệnh ssh. Tất cả cách này được hỗ trợ tốt và chọn cách nào tuỳ thuộc sở thích.

Trên Mac hoặc Linux, lệnh ssh đã có sẵn trong terminal.

Cú pháp cơ bản nhất:

ssh remote_host

remote_host là địa chỉ IP hoặc tên miền bạn muốn kết nối.

Lệnh này giả định username trên máy từ xa giống với username trên máy cục bộ.

Nếu khác, bạn có thể chỉ định username theo cú pháp:

ssh remote_username@remote_host

Sau khi kết nối, bạn có thể được yêu cầu xác nhận bằng mật khẩu. Chúng ta sẽ trình bày cách tạo khóa để dùng thay cho mật khẩu sau.

Để thoát phiên ssh và trở về shell cục bộ, gõ:

exit

SSH hoạt động như thế nào?

SSH hoạt động bằng cách kết nối chương trình client tới một ssh server, gọi là sshd.

Ở phần trước, ssh là chương trình client. ssh server đã chạy trên remote_host mà bạn chỉ định.

Hầu hết môi trường Linux đều tự động khởi động dịch vụ sshd. Nếu không chạy vì lý do nào đó, bạn cần truy cập tạm thời máy chủ qua console web hoặc console nối tiếp cục bộ.

Cách khởi động server ssh tuỳ vào bản phân phối Linux bạn dùng.

Trên Ubuntu, bạn có thể khởi động ssh server bằng lệnh:

sudo systemctl start ssh

Lệnh này sẽ khởi động sshd và bạn có thể đăng nhập từ xa.

Cách cấu hình SSH

Khi thay đổi cấu hình SSH, bạn đang chỉnh sửa cài đặt cho server sshd.

Trên Ubuntu, file cấu hình chính của sshd nằm ở /etc/ssh/sshd_config.

Sao lưu bản hiện tại trước khi chỉnh sửa:

sudo cp /etc/ssh/sshd_config{,.bak}

Mở file bằng nano hoặc trình soạn thảo yêu thích:

sudo nano /etc/ssh/sshd_config

Bạn nên giữ nguyên phần lớn các tùy chọn trong file. Tuy nhiên, vài mục bạn có thể cần chú ý:

Port 22

Khai báo port xác định cổng mà sshd lắng nghe kết nối. Mặc định là 22. Nên giữ nguyên trừ khi có lý do khác. Nếu thay đổi port, ta sẽ hướng dẫn cách kết nối với port mới sau.

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key

Khai báo các file chìa khóa host toàn cục. Sau này ta sẽ giải thích host key là gì.

SyslogFacility AUTH
LogLevel INFO

Hai dòng này xác định mức độ ghi log.

Nếu gặp khó khăn với SSH, tăng mức độ log có thể giúp bạn phát hiện vấn đề.

LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

Các tham số này liên quan đến thông tin đăng nhập.

  • LoginGraceTime xác định số giây giữ kết nối mà chưa đăng nhập thành công.

  • PermitRootLogin cho phép user root đăng nhập hay không.

  • StrictModes là cơ chế bảo vệ, từ chối đăng nhập nếu các file xác thực có quyền truy cập quá rộng.

Trong đa số trường hợp, nên đổi PermitRootLogin thành no khi đã tạo user có quyền sudo để giảm nguy cơ bị tấn công trực tiếp bằng root.

X11Forwarding yes
X11DisplayOffset 10

Các tùy chọn này cấu hình tính năng gọi là X11 Forwarding, cho phép bạn xem giao diện đồ họa của hệ thống từ xa trên máy cục bộ.

Tùy chọn này phải được bật trên server và truyền cho client thông qua tùy chọn -X khi kết nối.

Sau khi sửa đổi, lưu và đóng file. Nếu dùng nano, nhấn Ctrl+X, sau đó Y rồi Enter.

Nếu bạn thay đổi cấu hình trong /etc/ssh/sshd_config, hãy tải lại sshd để áp dụng:

sudo systemctl reload ssh

Nên mở vài phiên terminal song song khi chỉnh sửa để kịp phục hồi cấu hình nếu bị khóa ngoài.

Cách sử dụng ~/.ssh/config để quản lý nhiều kết nối SSH

Để đơn giản hóa truy cập nhiều server, tạo hoặc chỉnh sửa file ~/.ssh/config như sau:

Host dev-server
    HostName 192.168.1.10
    User devuser
    Port 2222
    IdentityFile ~/.ssh/dev_key

Sau đó bạn có thể kết nối bằng cách:

ssh dev-server

Cách này hữu dụng khi bạn quản lý nhiều khóa SSH và các cổng không chuẩn.

Cách đăng nhập SSH bằng khóa (SSH key)

Việc đăng nhập bằng mật khẩu vẫn tiện lợi, nhưng nhanh và an toàn hơn khi thiết lập xác thực dựa trên khóa.

Xác thực bằng khóa SSH hoạt động như thế nào?

Xác thực bằng khóa tạo thành cặp gồm khóa riêng tưkhóa công khai.

Khóa riêng tư nằm trên máy client, được bảo mật tuyệt đối.

Khóa công khai có thể chia sẻ cho bất kỳ ai hoặc đặt trên server bạn muốn truy cập.

Khi bạn kết nối bằng cặp khóa, server dùng khóa công khai tạo thông điệp mà chỉ có khóa riêng tư client mới giải mã được.

Client gửi phản hồi tương ứng lại server, xác nhận tính hợp lệ.

Quá trình này diễn ra tự động sau khi bạn cấu hình khóa.

Cách tạo SSH key

Khóa SSH nên được tạo trên máy bạn muốn đăng nhập từ (thường là máy local).

Gõ lệnh:

ssh-keygen -t rsa

Bạn có thể được yêu cầu đặt mật khẩu cho khóa, nhưng đây không phổ biến, bạn có thể nhấn enter để dùng mặc định. Khóa sẽ được tạo ở ~/.ssh/id_rsa.pub (khóa công khai) và ~/.ssh/id_rsa (khóa riêng).

Chuyển vào thư mục .ssh bằng lệnh:

cd ~/.ssh

Xem quyền hạn file:

ls -l

Bạn sẽ thấy khóa riêng id_rsa chỉ đọc và ghi được bởi chủ sở hữu để bảo mật, trong khi id_rsa.pub có thể chia sẻ.

Cách chuyển khóa công khai (public key) lên máy chủ

Nếu bạn vẫn có quyền truy cập server bằng mật khẩu, bạn có thể sao chép khóa công khai tới server với lệnh:

ssh-copy-id remote_host

Lệnh này sẽ mở phiên SSH, sau khi nhập mật khẩu, khóa công khai sẽ được thêm vào file authorized_keys của server giúp bạn đăng nhập không cần mật khẩu sau này.

Tùy chọn phía máy khách (client)

Có nhiều tùy chọn không bắt buộc bạn có thể dùng khi kết nối SSH.

Một số cần thiết để đồng bộ với cấu hình sshd trên máy chủ.

Ví dụ, nếu thay đổi port trên server, bạn cần chỉ định port đó khi kết nối:

ssh -p port_number remote_host

Lưu ý: Thay đổi port SSH là một cách đơn giản để tăng an toàn bằng cách làm khó phát hiện (security through obscurity). Nếu bạn để mở cổng mặc định 22 với xác thực bằng mật khẩu, rất dễ bị tấn công tự động. Chỉ dùng khóa SSH và thay port không chuẩn giúp giảm thiểu nguy cơ này.

Nếu bạn chỉ muốn chạy lệnh đơn trên máy từ xa, có thể chỉ định lệnh sau host:

ssh remote_host command_to_run

Bạn sẽ kết nối, xác thực rồi lệnh sẽ được thực hiện.

Nếu X11 forwarding được bật và cấu hình đúng, bạn có thể dùng:

ssh -X remote_host

Chương trình GUI trên remote sẽ hiển thị cửa sổ trên máy local nếu bạn có công cụ phù hợp.

Các lỗi SSH thường gặp và cách khắc phục

Lỗi Nguyên nhân có thể Giải pháp khuyến nghị
SSH Connection Refused Dịch vụ SSH (sshd) không chạy hoặc port bị chặn Khởi động SSH: sudo systemctl start ssh; kiểm tra firewall
Permission Denied (Publickey) Quyền file sai hoặc thiếu khóa công khai Sửa quyền: chmod 700 ~/.ssh, chmod 600 ~/.ssh/authorized_keys
SSH Timeout or Hang Vấn đề DNS, host không liên lạc được hoặc port bị chặn Dùng debug chi tiết: ssh -vvv user@host; kiểm tra mạng/firewall

Các lỗi SSH nâng cao và mẹo xử lý sự cố

Lỗi Nguyên nhân có thể Giải pháp nâng cao
Host key verification failed Không khớp file known_hosts do đổi IP hoặc host Xoá key cũ: ssh-keygen -R server_ip; hoặc chỉnh sửa ~/.ssh/known_hosts thủ công
Too many authentication failures SSH agent thử quá nhiều khóa Ép dùng key xác định: ssh -o IdentitiesOnly=yes -i ~/.ssh/id_rsa user@host
Connection closed by remote host Timeout không hoạt động hoặc cấu hình giới hạn trên server Kiểm tra sshd_config các mục ClientAliveInterval, MaxAuthTries, hoặc giới hạn đăng nhập
Bad owner or permissions on .ssh Quyền file quá rộng, gây rủi ro bảo mật Đảm bảo: chmod 700 ~/.ssh, chmod 600 ~/.ssh/id_rsa, chmod 644 ~/.ssh/id_rsa.pub
Cannot resolve hostname Lỗi gõ hostname hoặc DNS bị thất bại Kiểm tra DNS, sửa lỗi gõ, hoặc sửa /etc/hosts cho phân giải tĩnh
Authentication refused: no methods available Cả xác thực mật khẩu và khóa đều bị vô hiệu trên server Đảm bảo khóa đã cài hoặc bật một phương thức trong /etc/ssh/sshd_config

Vô hiệu hóa xác thực bằng mật khẩu

Nếu bạn đã tạo khóa SSH, có thể nâng cao bảo mật server bằng cách vô hiệu hoá xác thực bằng mật khẩu. Ngoài console, chỉ có thể đăng nhập bằng khóa riêng khớp với khóa công khai trên server.

Cảnh báo: Trước khi làm bước này, chắc chắn đã cài đặt khóa công khai trên server. Nếu không, bạn sẽ bị khóa ngoài!

Dùng quyền root hoặc user có sudo, mở file cấu hình sshd:

sudo nano /etc/ssh/sshd_config

Tìm dòng PasswordAuthentication, bỏ dấu # ở đầu và đổi giá trị thành no:

PasswordAuthentication no

Hai tùy chọn khác thường không cần thay đổi:

PubkeyAuthentication yes
ChallengeResponseAuthentication no

Lưu và đóng file.

Tải lại SSH daemon:

sudo systemctl reload ssh

Xác thực bằng mật khẩu giờ bị tắt, server chỉ cho phép đăng nhập qua khóa SSH.

Danh sách các thực hành bảo mật SSH tốt nhất

  • Vô hiệu hoá xác thực bằng mật khẩu (PasswordAuthentication no)
  • Đổi cổng mặc định từ 22 sang cổng khác
  • Dùng khóa SSH thay cho mật khẩu
  • Đặt PermitRootLogin no
  • Bật cập nhật bảo mật tự động
  • Giới hạn truy cập SSH qua firewall (ví dụ UFW hoặc firewalld)

Cách sử dụng SSH trên Windows, Linux và macOS

Windows: Sử dụng PowerShell, Git Bash hoặc WSL để truy cập SSH. Ví dụ:

ssh user@server_ip

macOS/Linux: Dùng terminal tích hợp và lệnh tương tự. Tạo khóa qua:

ssh-keygen

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

Q: SSH dùng để làm gì?

SSH hay Secure Shell chủ yếu dùng để đăng nhập an toàn vào các hệ thống từ xa, thường là máy chủ Linux. Nó tạo kênh mã hóa qua mạng không an toàn, cho phép bạn thực thi lệnh, chuyển tập tin và quản lý hạ tầng một cách bảo mật. SSH rất quan trọng với quản trị viên, nhà phát triển và đội DevOps để truy cập máy ảo từ xa, tự động hoá tác vụ, cũng như chuyển tiếp cổng hoặc tạo kết nối tunel an toàn.

Q: Làm sao tạo khóa SSH?

Dùng tiện ích ssh-keygen tạo cặp khóa công khai - riêng tư. Bạn có thể dùng lệnh ssh-keygen -t rsa -b 4096 tạo khóa RSA mạnh. Khóa riêng lưu trên máy local (~/.ssh/id_rsa), khóa công khai (id_rsa.pub) mang lên server. Khi kết nối, server dùng khóa công khai xác minh bạn mà không gửi mật khẩu. Xác thực bằng khóa vừa bảo mật vừa tiện lợi.

Q: Lỗi “Permission denied” trong SSH nghĩa là gì?

Lỗi này thường do thất bại trong xác thực. Có thể là username sai, quyền truy cập thư mục .ssh hoặc file khoá không đúng, hoặc khóa công khai không có trên server. .ssh nên có quyền 700, khóa riêng tư 600. SSH cũng có thể chặn xác thực mật khẩu hoặc đăng nhập root tuỳ cấu hình sshd_config.

Q: SSH có an toàn không?

Có, SSH được xem là phương thức truy cập từ xa an toàn hàng đầu. Nó dùng mã hóa bất đối xứng và thuật toán hiện đại đảm bảo tính bí mật và toàn vẹn dữ liệu. Bạn có thể tăng cường bảo mật bằng cách tắt xác thực mật khẩu, dùng cặp khóa, thay cổng mặc định, bật xác thực hai yếu tố (2FA), hoặc dùng công cụ như Fail2Ban chống tấn công brute-force. Thường xuyên cập nhật server và kiểm tra nhật ký cũng giúp giảm thiểu rủi ro.

Q: Tôi có thể dùng SSH trên Windows không?

Chắc chắn rồi. Windows hỗ trợ SSH natively qua PowerShell và OpenSSH, nhất là từ Windows 10 trở đi. Bạn cũng có thể dùng Git Bash có sẵn client SSH hoặc cài WSL cho môi trường Linux đầy đủ. Các thao tác tạo khóa và cấu hình tương tự như trên Linux/macOS, biến Windows thành nền tảng hiệu quả để quản lý hệ thống từ xa qua SSH.

Kết luận

Việc thành thạo SSH sẽ rất có lợi cho các công việc điện toán đám mây trong tương lai của bạn. Khi sử dụng các tùy chọn khác nhau, bạn sẽ phát hiện các tính năng nâng cao giúp công việc dễ dàng hơn. SSH luôn phổ biến vì nó an toàn, nhẹ nhàng và hữu ích trong nhiều tình huống khác nhau.

CloudFly đơn vị tiên phong tại Việt Nam cung cấp dịch vụ Cloud Server và Cloud Hosting tùy chỉnh cấu hình

CLOUDFLY tự hào là đơn vị tiên phong tại Việt Nam cung cấp dịch vụ Cloud Server, Cloud Hosting tùy chỉnh cấu hình. Chúng tôi nhận được sự tin tưởng và hợp tác với hơn 15.000 khách hàng trong và ngoài nước. Sẵn sàng đồng hành và đem lại những giải pháp tối ưu nhất cho bạn. Nếu quý khách hàng gặp khó khăn hay có bất kì thắc mắc nào. Hãy liên hệ theo thông tin bên dưới. CloudFly - Đơn giản hóa ứng dụng trên đám mây HOTLINE: 0904.558.448 WEBSITE: https://cloudfly.vn/ FACEBOOK: https://www.facebook.com/cloudfly.vn TELEGRAM CHANNELS: https://t.me/cloudflyvn

Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly
Share

0 replies