Mở terminal của bạn.
Chạy lệnh SSH:
ssh username@your_server_ip
Xem xét và chấp nhận dấu vân tay host nếu được yêu cầu.
Xác thực bằng mật khẩu hoặc khóa SSH (nếu đã cấu hình).
Bạn đã kết nối!
Gõ exit
để đóng phiên SSH và trở về shell cục bộ.
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.
Để 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 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.
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.
Để đơ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.
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 tạo thành cặp gồm khóa riêng tư và 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.
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ẻ.
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.
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.
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 |
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 |
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.
PasswordAuthentication no
)PermitRootLogin no
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
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.
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 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