Cài đặt và cấu hình SSH vào server là một điều rất quan trọng đối với các quản trị viên hệ thống và nhà phát triển phần mềm. Secure Shell (SSH) là một giao thức mạng cho phép bạn kết nối an toàn và điều khiển máy chủ từ xa. Bằng cách sử dụng SSH, bạn có thể truy cập vào giao diện dòng lệnh của server, thực hiện các tác vụ quản trị, triển khai ứng dụng và quản lý hệ thống một cách hiệu quả. Trong bài viết này, Vietnix sẽ hướng dẫn bạn cách Thiết lập SSH vào server Linux chi tiết và dễ hiểu
SSH – chìa khóa để vào server Linux
SSH (hay còn gọi là Secure (Socket) Shell) là giao thức mạng cho phép người dùng truy cập và điều khiển vào một máy chủ nhất định từ xa từ một thiết bị qua một mạng không được bảo mật.
![Cách cài đặt và thiết lập cấu hình SSH vào server Linux chi tiết, dễ hiểu 6 SSH là gì](https://static-xf1.vietnix.vn/wp-content/uploads/2024/05/ssh-la-gi-1.webp)
Giao thức SSH cho phép bạn thực hiện mọi tác vụ trên Linux như thiết lập phần mềm, cấu hình Linux. Với sự linh hoạt của giao thức truy cập từ xa, người dùng sẽ được tối ưu năng suất, hiệu quả làm việc trên bản phân phối Linux của mình.
Ngoài ra, trước khi tìm hiểu chi tiết cách SSH vào server Linux bạn có thể tham khảo các câu lệnh trong Linux cơ bản để nắm bắt rõ hơn và cách thực hiện các dòng lệnh.
Cú pháp SSH
Dòng lệnh kết nối đến hệ thống remote là lệnh ssh. Đối với Windows, bạn cần cài đặt OpenSSH để dùng được lệnh ssh từ terminal. Nếu muốn làm việc trong PowerShell thì bạn đọc có thể tham khảo tài liệu của Microsoft để thêm OpenSSH vào PowerShell. Mặt khác, bạn cũng có thể cài đặt WSL (Windows Subsystem for Linux) nếu muốn sử dụng một môi trường Linux hoàn chỉnh. Lựa chọn thứ ba là sử dụng Git cho Windows có sẵn môi trường bash terminal và hỗ trợ lệnh ssh.
Bên cạnh đó, người dùng MacOS và Linux thì đã có sẵn lệnh ssh nên không cần phải cài đặt gì trước.
Cách gọi lệnh ssh:
ssh remote_host
Trong đó remote_host là địa chỉ IP hoặc tên miền cần kết nối đến. Lệnh này chỉ dùng nếu username trên hệ thống remote và local là giống nhau. Nếu username ở remote server không giống thì bạn cần chỉ định cụ thể bằng cú pháp sau:
ssh remote_username@remote_host
Sau khi kết nối đến server, bạn có thể cần cung cấp mật khẩu để xác thực.
Để thoát khỏi phiên ssh thì chỉ cần dùng lệnh exit.
Cách SSH hoạt động trên server Linux
SSH hoạt động bằng cách kết nối một chương trình client đến server ssh, hay gọi còn là sshd. Bản chất của SSH là chương trình client, còn SSH server đang chạy trên remote_host đã chỉ định.
![Cách cài đặt và thiết lập cấu hình SSH vào server Linux chi tiết, dễ hiểu 7 Cách SSH hoạt động trên server Linux](https://static-xf1.vietnix.vn/wp-content/uploads/2024/05/Cach-SSH-hoat-dong-tren-server-Linux.webp)
Hầu hết các môi trường Linux đều có server sshd chạy sẵn. Nếu không, bạn có thể cần phải kết nối tạm thời đến server thông qua một console dựa trên web.
Quá trình khởi động một server ssh sẽ tùy thuộc vào bản phân phối Linux đang sử dụng. Đối với Ubuntu thì bạn có thể dùng lệnh sudo sau:
sudo systemctl start ssh
2 cách cài đặt giao thức SSH kết nối với server Linux
Cách 1: Cài đặt SSH theo phương thức remote
Cách cài đặt và thiết lập SSH trên máy khách theo phương thức remote vô cùng đơn giản. Đôi lúc, bạn lại gặp những trường hợp không cần đến sự trợ giúp từ các phần mềm hỗ trợ:
- SSH được tích hợp sẵn trong terminal của hệ thống Linux
- Người sử dụng macOS (thường) được cài đặt sẵn termninal
- Công cụ dòng lệnh PowerShell hoặc cài đặt PuTTY (phổ biến trên hệ điều hành Windows)
Giả sử nếu gặp trường hợp chưa được cài đặt SSH trên hệ thống Linux, bạn cần thêm các gói và nâng cấp.
Sau đó, bạn cài đặt theo cú pháp sau:
sudo apt update && sudo apt upgrade
sudo apt install openssh-client
Trường hợp máy tính đã từng sử dụng SSH trên hệ điều hành Window và đã chuyển sang Linux, bạn cần cài đặt Putty phiên bản desktop Linux:
sudo apt install putty
Cách 2: Cài đặt SSH trên hệ thống server
Điều kiện tiên quyết để có thể thiết lập kết nối là phần mềm để lưu trữ kết nối từ phía máy chủ được cài đặt sẵn.
Trường hợp SSH chưa được bật trên một máy tính bất kỳ trong hệ thống server, bạn hãy cài đặt theo cú pháp:
sudo apt install openssh-server
Sau khi cài đặt, kiểm tra trạng thái hoạt động bằng cách:
sudo systemctl status ssh
Trạng thái Active hiển thị thông báo đã được bật
![Cách cài đặt và thiết lập cấu hình SSH vào server Linux chi tiết, dễ hiểu 8 Cài đặt SSH trên hệ thống server](https://static-xf1.vietnix.vn/wp-content/uploads/2024/05/Cai-dat-SSH-tren-he-thong-server.webp)
Thỉnh thoảng, bạn lại cần bật SSH trên thiết bị từ xa. Do đó. bạn hãy phòng ngừa bảo mật đường truyền bằng cách
sudo systemctl enable ssh
Xác định địa chỉ IP – kết nối Linux Server qua SSH
Xác định được địa chỉ IP sẽ giúp bạn dễ dàng kết nối với nhiều thiết bị qua SSH
Thực hiện dòng lệnh để nhận được IP của hệ thống từ xa
ip address
Sau khi thực hiện lệnh bạn sẽ nhận được địa chỉ IP của thiết bị. Trên một số phiên bản Linux cũ hơn, bạn có thể thử dòng lệnh ifconfig:
ifconfig
Cách kết nối với Linux với địa chỉ IP
Với địa chỉ IP vừa tìm được, bạn sẽ cần một phần mềm hỗ trợ Putty hỗ trợ hãy thực hiện với dòng lệnh ssh sau:
ssh username@REMOTE.IP.ADDRESS.HERE
Sau đó, bạn nhấn Enter và nhập mật khẩu
Khi vào Putty trên hệ thống remote là Desktop bạn sẽ nhận được thông báo như hình:
![Cách cài đặt và thiết lập cấu hình SSH vào server Linux chi tiết, dễ hiểu 9 Vào Putty trên hệ thống remote là Desktop](https://static-xf1.vietnix.vn/wp-content/uploads/2024/05/vao-Putty-tren-he-thong-remote-la-Desktop.webp)
Như màn hình hiển thị, bạn cần nhập chính xác các mục:
- Hostname: Tên máy chủ hoặc IP Address vừa tìm được
- Kiểu kết nối SSH
Sau đó, nhấn Open. Nhập tên người dùng và mật khẩu với thiết bị từ xa bạn muốn kết nối và truy cập
![Cách cài đặt và thiết lập cấu hình SSH vào server Linux chi tiết, dễ hiểu 10 Nhập tên người dùng và mật khẩu với thiết bị từ xa bạn muốn kết nối và truy cập](https://static-xf1.vietnix.vn/wp-content/uploads/2024/05/Nhap-ten-nguoi-dung-va-mat-khau-voi-thiet-bi-tu-xa-ban-muon-ket-noi-va-truy-cap.webp)
Cách cấu hình SSH vào server Linux
Việc thay đổi cấu hình SSH đồng nghĩa với việc thay đổi cài đặt của server sshd. Trong Ubuntu thì file cấu hình sshd chính nằm trong thư mục /etc/ssh/sshd_config
.
Trước hết, hãy backup (sao lưu) lại bản file hiện tại:
sudo cp /etc/ssh/sshd_config{,.bak}
Sau đó mở file cấu hình bằng một text editor bất kỳ:
sudo nano /etc/ssh/sshd_config
Trong đó hãy để ý một dòng chỉ định port kết nối có giá trị như sau:
Port 22
Cổng ở đây cho biết cổng mà server sshd sẽ nghe các kết nối, theo mặc định là cổng 22.
Một số thông tin khác cần chú ý:
HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_ecdsa_key
Các host key cho biết vị trí tìm kiếm các global host key.
SyslogFacility AUTH LogLevel INFO
Hai dòng này cho biết trong các log đã ghi lại các hoạt động, sự kiện gì đã diễn ra. Nếu gặp bất kỳ vấn đề với SSH thì người dùng có thể thử tăng số lượng logging để kiểm tra vấn đề.
LoginGraceTime 120 PermitRootLogin yes StrictModes yes
Các tham số này chỉ định một số thông tin đăng nhập. Trong đó:
- LoginGraceTime: cho biết cần duy trì kết nối trong bao lâu nếu không đăng nhập thành công (tính bằng giây). Bạn có thể đặt thời gian này cao hơn một chút so với thời gian thường cần để đăng nhập.
- PermitRootLogin: xác định xem root user có được phép đăng nhập hay không. Bạn nên đặt thành no sau khi đã tạo một tài khoản người dùng có quyền truy cập vào các đặc quyền cao (qua su hoặc sudo) và có thể đăng nhập qua ssh.
- stricModes: là một chế độ bảo mật, có nhiệm vụ từ chối các lượt đăng nhập nếu mọi người đều có quyền đọc các file xác thực. Việc này giúp ngăn chặn đăng nhập khi file cấu hình không an toàn.
X11Forwarding yes X11DisplayOffset 10
Các tham số này cấu hình X11 Forward – một cơ chế cho phép xem GUI của hệ thống remote trên máy local. Người dùng nên bật tùy chọn này trên server và được cấp cùng với SSH client trong quá trình kết nối (bằng tùy chọn -X).
Sau khi thực hiện các thay đổi, hãy lưu rồi đóng lại file. Nếu sử dụng nano thì dùng tổ hợp Ctrl+X, nhập Y rồi nhấn Enter để hoàn tất. Tiếp đến bạn cần reload lại server sshd để áp dụng các thay đổi.
sudo systemctl reload ssh
Bạn có thể mở nhiều cửa sổ terminal khác nhau khi thực hiện thay đổi để khôi phục lại các cấu hình nếu cần.
Cách đăng nhập vào SSH bằng key
Bạn hoàn toàn có thể đăng nhập vào hệ thống remote bằng mật khẩu, nhưng phương thức xác thực dựa trên key sẽ nhanh và an toàn hơn. Trước tiên hãy cùng tìm hiểu cách thức hoạt động của phương pháp xác thực dựa trên key.
Phương thức xác thực bằng key sẽ tạo một cặp khóa: private key và public key. Trong đó private key nằm trên máy client và được giữ bí mật. Còn public key sẽ được cung cấp cho bất kỳ bên nào hoặc đặt trên server muốn truy cập.
Khi kết nối bằng một cặp key thì server sẽ sử dụng public sẽ tạo một thông báo cho máy client và chỉ có thể được đọc bởi private key. Máy client sau đó gửi một phản hồi lại server để server biết được client này có hợp lệ hay không. Quá trình này được thực hiện tự động sau khi cấu hình xong các key.
Cách tạo SSH key
Các key SSH sẽ được tạo trên máy local ccuar bạn (máy client kết nối đến server chỉ định):
ssh-keygen -t rsa
Bạn có thể được yêu cầu nhập mật khẩu cho file key, bạn có thể nhấn Enter nếu muốn bỏ qua bước này. Sau khi chạy lệnh trên, key sẽ được tạo tại ~/.ssh/id_rsa.pub
và ~/.ssh/id_rsa
.
Điều hướng đến thư mục .ssh bằng lệnh cd:
cd ~/.ssh
Kiểm tra quyền của các file bằng cú pháp lệnh ls:
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
Có thể thấy rằng file id_rsa
chỉ có thể được đọc và ghi bởi chủ sở hữu. Việc này giúp bảo mật private key. Mặt khác, file id_rsa.pub
có thể được chia sẻ với những bên khác.
Cách truyền public key đến server
Nếu đã có sẵn quyền truy cập dựa trên password vào server thì bạn có thể sao chép public key vào bằng lệnh sau:
ssh-copy-id remote_host
Lệnh này sẽ khởi tạo một phiên SSH, sau khi nhập mật khẩu thì bạn sao chép public key vào file key của server để đăng nhập mà không cần mật khẩu ở những lần sau.
Các lựa chọn ở phía client
Phía client có thể áp dụng một số flag khi kết nối qua SSH. Giả sử bạn vừa thay đổi cổng port trong cấu hình của sshd thì bạn cần khớp cổng này ở phía client bằng lệnh sau:
ssh -p port_number remote_host
Nếu chỉ muốn thực thi một lệnh duy nhất trên hệ thống remote thì bạn có thể chỉ định ở sau tên host như sau:
ssh remote_host command_to_run
Sau khi thực hiện lệnh trên, bạn sẽ kết nối đến máy remote, xác thực và lệnh sẽ được thực thi. Ngoài ra bạn đã enable X11 Forwarding ở phần vừa rồi nên bạn có thể truy cập các chức năng của nó như sau:
ssh -X remote_host
Bỏ phương thức xác thực bằng password
Nếu đã tạo key SSH thì bạn có thể tăng khả năng bảo mật của server bằng cách disable (vô hiệu hoá) phương thức xác thực chỉ dựa trên password. Ngoài console thì người dùng chỉ có thể đăng nhập server bằng private key đã cài trên máy.
Mở file cấu hình sshd bằng quyền sudo:
sudo nano /etc/ssh/sshd_config
Tìm và bỏ comment dòng có Password Authentication (bỏ dấu # ở đầu), sau đó đặt giá trị thành no:
PasswordAuthentication no
Sau đó lưu và đóng file, reload lại daemon SSH để áp dụng các thay đổi:
sudo systemctl reload ssh
Câu hỏi thường gặp
Cách sử dụng SSH để chạy lệnh từ xa trên server Linux?
1. Mở terminal:
2. Gõ lệnh SSH: ssh user@hostname
3. Nhập mật khẩu
4. Chạy lệnh
Đâu là sự khác biệt cách thức hoạt động giữa SSH và Telnet?
SSH: Sử dụng nhiều phương thức xác thực khác nhau, bao gồm cả xác thực bằng mật khẩu và xác thực dựa trên khóa công khai. Điều này giúp tăng cường bảo mật cho kết nối.
Telnet: Chủ yếu dựa vào xác thực bằng mật khẩu, dễ bị tấn công bằng các công cụ tấn công mật khẩu thô bạo.
Các bước tạo khóa SSH để kết nối vào server Linux
1. Mở terminal:
2. Thực hiện lệnh: ssh-keygen -t rsa
3. Nhập đường dẫn hoặc mật khẩu
4. Xác nhận nhập passphrase
Lời kết
SSH là một giao thức rất an toàn, nhẹ và dễ sử dụng để kết nối đến các remote server. Biết cách SSH vào server Linux sẽ rất hữu ích khi làm việc liên quan đến các hệ thống nằm ở các vị trí khác nhau và vẫn giữ được sự đồng bộ và ổn định. Nếu gặp bất kỳ khó khăn nào trong quá trình thiết lập kết nối thì hãy để lại ở phần comment bên dưới để được hỗ trợ nhanh nhất bởi Vietnix nhé!