Hướng Dẫn Sử Dụng SSH Kết Nối Máy Chủ Từ Xa An Toàn và Hiệu Quả

Hướng Dẫn Sử Dụng SSH Kết Nối Máy Chủ Từ Xa

SSH (Secure Shell) là một công cụ không thể thiếu đối với quản trị viên hệ thống, cho phép đăng nhập an toàn vào các máy chủ từ xa thông qua giao thức mã hoá tiên tiến. Đây là phương thức phổ biến nhất để truy cập và quản lý các máy chủ Linux từ xa, giúp bạn thực hiện các tác vụ quản trị một cách hiệu quả và bảo mật. Trong bài hướng dẫn này, chúng ta sẽ khám phá cách sử dụng SSH để kết nối đến hệ thống từ xa, từ đó nắm vững kỹ năng cần thiết cho việc quản trị hệ thống.

Để quản lý máy chủ từ xa hiệu quả, sử dụng SSH là giải pháp bảo mật tối ưu. Nếu bạn đang tìm kiếm nền tảng mạnh mẽ, VPS Windows cung cấp giao diện thân thiện và hiệu suất cao, phù hợp cho doanh nghiệp muốn tối ưu hóa quản trị hệ thống. Khám phá ngay các gói VPS Windows tại đây!

Bên cạnh đó, khi bạn cần triển khai các ứng dụng frontend được lưu trữ trên GitHub, hãy để DataOnline đảm nhận vai trò mở rộng và quản lý ứng dụng của bạn. Việc này giúp bạn tập trung vào phát triển sản phẩm, trong khi DataOnline lo liệu việc bảo trì, mở rộng và tối ưu hóa hạ tầng, mang lại hiệu quả tối đa cho dự án của bạn.

Cú pháp cơ bản

Để kết nối tới hệ thống từ xa sử dụng SSH, chúng ta sẽ sử dụng lệnh ssh. Nếu bạn đang sử dụng Windows, bạn cần cài đặt một phiên bản OpenSSH để có thể ssh từ terminal. Nếu bạn thích làm việc trong PowerShell, bạn có thể làm theo tài liệu của Microsoft để thêm OpenSSH vào PowerShell. Nếu bạn muốn có một môi trường Linux đầy đủ, bạn có thể thiết lập WSL, Windows Subsystem for Linux, nơi sẽ bao gồm ssh theo mặc định. Cuối cùng, như một tùy chọn nhẹ thứ ba, bạn có thể cài đặt Git for Windows, cung cấp môi trường terminal bash Windows gốc bao gồm lệnh ssh. Mỗi phương pháp này đều được hỗ trợ tốt và lựa chọn sẽ phụ thuộc vào sở thích của bạn. Nếu bạn đang sử dụng Mac hoặc Linux, bạn đã có sẵn lệnh ssh trong terminal của mình.

Dạng đơn giản nhất của lệnh là:

ssh remote_host

remote_host trong ví dụ này là địa chỉ IP hoặc tên miền mà bạn đang cố gắng kết nối tới. Lệnh này giả định rằng tên người dùng của bạn trên hệ thống từ xa giống với tên người dùng trên hệ thống cục bộ của bạn. Nếu tên người dùng của bạn khác trên hệ thống từ xa, bạn có thể chỉ định nó bằng cú pháp này:

ssh remote_username@remote_host

Khi bạn đã kết nối với máy chủ, bạn có thể được yêu cầu xác minh danh tính bằng cách cung cấp mật khẩu. Sau này, chúng ta sẽ đề cập đến cách tạo khóa để sử dụng thay cho mật khẩu. Để thoát khỏi phiên ssh và quay lại phiên shell cục bộ của bạn, hãy gõ:

exit

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

SSH hoạt động bằng cách kết nối một chương trình khách với một máy chủ ssh, được gọi là sshd. Trong phần trước, ssh là chương trình khách. Máy chủ ssh đã chạy sẵn trên remote_host mà chúng ta đã chỉ định. Trên hầu hết các môi trường Linux, máy chủ sshd nên tự động khởi động. Nếu vì bất kỳ lý do nào nó không chạy, bạn có thể cần truy cập tạm thời vào máy chủ của mình thông qua bảng điều khiển dựa trên web hoặc bảng điều khiển nối tiếp cục bộ.

Quy trình cần thiết để khởi động máy chủ ssh phụ thuộc vào bản phân phối Linux mà bạn đang sử dụng. Trên Ubuntu, bạn có thể khởi động máy chủ ssh bằng cách gõ:

sudo systemctl start ssh

Điều đó sẽ khởi động máy chủ sshd, và sau đó bạn có thể đăng nhập từ xa.

Cách cấu hình SSH

Khi bạn thay đổi cấu hình của SSH, bạn đang thay đổi cài đặt của máy chủ sshd. Trong Ubuntu, tệp cấu hình chính của sshd nằm tại /etc/ssh/sshd_config. Sao lưu phiên bản hiện tại của tệp này trước khi chỉnh sửa:

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

Mở nó bằng nano hoặc trình soạn thảo văn bản ưa thích của bạn:

sudo nano /etc/ssh/sshd_config

Bạn sẽ muốn để hầu hết các tùy chọn trong tệp này nguyên vẹn. Tuy nhiên, có một vài tùy chọn bạn có thể muốn xem xét:

/etc/ssh/sshd_config

Port 22

Khai báo cổng chỉ định cổng nào máy chủ sshd sẽ lắng nghe kết nối. Mặc định là 22. Bạn có lẽ nên để nguyên cài đặt này trừ khi bạn có lý do cụ thể để làm khác đi. Nếu bạn thay đổi cổng, chúng tôi sẽ chỉ cho bạn cách kết nối đến cổng mới sau.

/etc/ssh/sshd_config

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

Khai báo khóa máy chủ chỉ định nơi tìm kiếm khóa máy chủ toàn cục. Chúng ta sẽ thảo luận về khóa máy chủ là gì sau.

/etc/ssh/sshd_config

SyslogFacility AUTH
LogLevel INFO

Hai mục này chỉ ra mức độ ghi nhật ký nên xảy ra. Nếu bạn đang gặp khó khăn với SSH, tăng lượng ghi nhật ký có thể là một cách tốt để khám phá vấn đề là gì.

/etc/ssh/sshd_config

LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

Các tham số này chỉ định một số thông tin đăng nhập.

LoginGraceTime chỉ định bao nhiêu giây để giữ kết nối sống mà không đăng nhập thành công. Có thể là một ý tưởng tốt để đặt thời gian này chỉ cao hơn một chút so với khoảng thời gian mà bạn thường mất để đăng nhập. PermitRootLogin chọn liệu người dùng root có được phép đăng nhập hay không. Trong hầu hết các trường hợp, điều này nên được đổi thành no khi bạn đã tạo một tài khoản người dùng có quyền truy cập vào đặc quyền nâng cao (thông qua su hoặc sudo) và có thể đăng nhập thông qua SSH để giảm thiểu rủi ro bất kỳ ai có quyền truy cập root vào máy chủ của bạn. strictModes là một biện pháp bảo vệ an toàn sẽ từ chối nỗ lực đăng nhập nếu các tệp xác thực có thể đọc được bởi mọi người. Điều này ngăn chặn các nỗ lực đăng nhập khi các tệp cấu hình không an toàn.

/etc/ssh/sshd_config

X11Forwarding yes
X11DisplayOffset 10

Các tham số này cấu hình một khả năng gọi là X11 Forwarding. Điều này cho phép bạn xem giao diện người dùng đồ họa (GUI) của hệ thống từ xa trên hệ thống cục bộ. Tùy chọn này phải được bật trên máy chủ và cung cấp cho khách hàng SSH trong quá trình kết nối với tùy chọn -X. Sau khi thực hiện các thay đổi của bạn, lưu và đóng tệp. Nếu bạn đang sử dụng nano, nhấn Ctrl+X, sau đó khi được nhắc, Y và sau đó Enter. Nếu bạn đã thay đổi bất kỳ cài đặt nào trong /etc/ssh/sshd_config, hãy đảm bảo bạn tải lại máy chủ sshd để thực hiện các sửa đổi của mình:

sudo systemctl reload ssh

Bạn nên kiểm tra kỹ lưỡng các thay đổi của mình để đảm bảo rằng chúng hoạt động theo cách bạn mong đợi. Có thể là một ý tưởng tốt để có một vài phiên terminal mở trong khi bạn đang thực hiện thay đổi. Điều này sẽ cho phép bạn khôi phục cấu hình nếu cần thiết mà không tự khóa mình ra ngoài.

Cách đăng nhập SSH với Keys

Mặc dù có thể đăng nhập vào hệ thống từ xa bằng mật khẩu, nhưng việc thiết lập xác thực dựa trên khóa sẽ nhanh hơn và an toàn hơn.

Xác thực dựa trên khóa hoạt động như thế nào?

Xác thực dựa trên khóa hoạt động bằng cách tạo một cặp khóa: Private Key và Public Key. Private Key nằm trên máy của khách hàng và được bảo mật và giữ bí mật. Public Key có thể được cung cấp cho bất kỳ ai hoặc đặt trên bất kỳ máy chủ nào bạn muốn truy cập. Khi bạn cố gắng kết nối bằng cặp khóa, máy chủ sẽ sử dụng Public Key để tạo một thông điệp cho máy tính khách hàng mà chỉ có thể đọc được với Private Key. Máy tính khách hàng sau đó gửi phản hồi thích hợp trở lại máy chủ, điều này sẽ cho máy chủ biết rằng khách hàng là hợp pháp. Quá trình này được thực hiện tự động sau khi bạn cấu hình khóa của mình.

Cách tạo SSH Keys

Khóa SSH nên được tạo trên máy tính mà bạn muốn đăng nhập. Đây thường là máy cục bộ của bạn. Nhập những điều sau vào dòng lệnh:

ssh-keygen -t rsa

Bạn có thể được nhắc đặt mật khẩu cho chính các tệp khóa, nhưng đây là một thực hành khá không phổ biến, và bạn nên nhấn enter qua các lời nhắc để chấp nhận các giá trị mặc định. Khóa của bạn sẽ được tạo tại ~/.ssh/id_rsa.pub~/.ssh/id_rsa.

Chuyển vào thư mục .ssh bằng cách gõ:

cd ~/.ssh

Xem quyền của các tệp:

ls -l

Output

-rw-r--r-- 1 demo demo  807 Sep  9 22:15 authorized_keys
-rw------- 1 demo demo 1679 Sep  9 23:13 id_rsa
-rw-r--r-- 1 demo demo  396 Sep  9 23:13 id_rsa.pub

Như bạn có thể thấy, tệp id_rsa chỉ có thể đọc và ghi bởi chủ sở hữu. Điều này giúp giữ bí mật. Tuy nhiên, tệp id_rsa.pub có thể được chia sẻ và có quyền thích hợp cho hoạt động này.

Cách chuyển Public Key của bạn đến máy chủ

Nếu hiện tại bạn có quyền truy cập dựa trên mật khẩu đến máy chủ, bạn có thể sao chép Public Key của mình vào đó bằng cách phát lệnh này:

ssh-copy-id remote_host

Điều này sẽ bắt đầu một phiên SSH. Sau khi bạn nhập mật khẩu của mình, nó sẽ sao chép Public Key của bạn vào tệp khóa được ủy quyền của máy chủ, điều này sẽ cho phép bạn đăng nhập mà không cần mật khẩu trong lần tới.

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

Có một số tham số tùy chọn mà bạn có thể cung cấp khi kết nối thông qua SSH. Một số trong số này có thể cần thiết để khớp với cài đặt trong cấu hình sshd của máy chủ từ xa. Ví dụ, nếu bạn đã thay đổi số cổng trong cấu hình sshd của mình, bạn sẽ cần phải khớp cổng đó ở phía máy khách bằng cách gõ:

ssh -p port_number remote_host

Lưu ý: Thay đổi cổng ssh của bạn là một cách hợp lý để cung cấp bảo mật thông qua sự mờ ám. Nếu bạn đang cho phép kết nối SSH đến một triển khai máy chủ được biết đến rộng rãi trên cổng 22 như bình thường và bạn đã bật xác thực mật khẩu, bạn có thể sẽ bị tấn công bởi nhiều nỗ lực đăng nhập tự động. Việc sử dụng độc quyền xác thực dựa trên khóa và chạy SSH trên một cổng không tiêu chuẩn không phải là giải pháp bảo mật phức tạp nhất mà bạn có thể sử dụng, nhưng bạn nên giảm thiểu chúng.

Nếu bạn chỉ muốn thực thi một lệnh duy nhất trên hệ thống từ xa, bạn có thể chỉ định nó sau máy chủ như sau:

ssh remote_host command_to_run

Bạn sẽ kết nối với máy từ xa, xác thực, và lệnh sẽ được thực thi. Như chúng ta đã nói trước đây, nếu X11 forwarding được bật trên cả hai máy tính, bạn có thể truy cập chức năng đó bằng cách gõ:

ssh -X remote_host

Nếu bạn có các công cụ thích hợp trên máy tính của mình, các chương trình GUI mà bạn sử dụng trên hệ thống từ xa bây giờ sẽ mở cửa sổ của chúng trên hệ thống cục bộ của bạn.

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

Nếu bạn đã tạo khóa SSH, bạn có thể tăng cường bảo mật cho máy chủ của mình bằng cách vô hiệu hóa xác thực chỉ dùng mật khẩu. Ngoài bảng điều khiển, cách duy nhất để đăng nhập vào máy chủ của bạn sẽ là thông qua Private Key khớp với Public Key mà bạn đã cài đặt trên máy chủ.

Cảnh báo: Trước khi bạn tiến hành bước này, hãy chắc chắn rằng bạn đã cài đặt một Public Key vào máy chủ của mình. Nếu không, bạn sẽ bị khóa ra ngoài!

Với tư cách là root hoặc người dùng có đặc quyền sudo, mở tệp cấu hình sshd:

sudo nano /etc/ssh/sshd_config

Xác định dòng có nội dung Password Authentication, và bỏ comment bằng cách xóa # ở đầu. Sau đó, bạn có thể thay đổi giá trị của nó thành no:

/etc/ssh/sshd_config

PasswordAuthentication no

Hai cài đặt khác mà không cần phải sửa đổi (với điều kiện bạn chưa sửa đổi tệp này trước đó) là PubkeyAuthentication và ChallengeResponseAuthentication. Chúng được đặt theo mặc định và nên đọc như sau:

PubkeyAuthentication yes
ChallengeResponseAuthentication no

Sau khi thực hiện các thay đổi của bạn, lưu và đóng tệp.

Bây giờ bạn có thể tải lại daemon SSH:

sudo systemctl reload ssh

Xác thực mật khẩu bây giờ nên bị vô hiệu hóa, và máy chủ của bạn chỉ có thể truy cập thông qua xác thực khóa SSH.

Kết luận

Học cách sử dụng SSH là một bước quan trọng, mang lại nhiều lợi ích cho mọi nỗ lực điện toán đám mây trong tương lai của bạn. Khi khám phá và áp dụng các tùy chọn nâng cao của SSH, bạn sẽ phát hiện ra những tính năng tiên tiến giúp đơn giản hóa các tác vụ quản trị từ xa, tối ưu hóa hiệu suất và tiết kiệm thời gian. SSH luôn được ưa chuộng nhờ khả năng bảo mật vượt trội, tính nhẹ nhàng và tính linh hoạt, phù hợp với nhiều tình huống khác nhau trong quản trị hệ thống.

Việc cấu hình SSH đòi hỏi máy chủ đáng tin cậy. Thuê máy chủ VPS là lựa chọn lý tưởng để đảm bảo tốc độ và bảo mật khi kết nối từ xa. Với chi phí hợp lý, bạn có thể dễ dàng quản lý dữ liệu an toàn. Tìm hiểu thêm về dịch vụ thuê máy chủ VPS ngay hôm nay!

Tiếp theo, bạn có thể tìm hiểu về làm việc với SFTP để thực hiện truyền tệp qua dòng lệnh.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *