SSH (Secure Shell): là một giao thức điều khiển từ xa cho phép người dùng kiểm soát và chỉnh sửa server từ xa qua Internet. Dịch vụ được tạo ra nhằm thay thế cho trình Telnet vốn không có mã hóa và sử dụng kỹ thuật cryptographic để đảm bảo tất cả giao tiếp gửi tới và gửi từ server từ xa diễn ra trong tình trạng mã hóa. Nó cung cấp thuật toán để chứng thực người dùng từ xa, chuyển input từ client tới host, và relay kết quả trả về tới khách hàng. Trong bài viết mình sẽ hướng dẫn kết nối vào SSH Server Linux bằng SSH Client sử dụng hệ điều hành Linux.
Sơ đồ SSH hoạt động theo mô hình Client – Server
- SSH Client : thiêt bị dùng để kết nối tới server
- SSH Server : máy chủ cần đăng nhập vào để quản trị
SSH vào server sử dụng password
Để tiến hành SSH vào máy chủ, bạn cần có thông tin đăng nhập bao gồm username , password, IP máy chủ và Port SSH (mặc định 22). Thông tin này có được từ:
- Quá trình cài đặt hệ điều hành cho máy chủ sẽ yêu cầu bạn tạo user & password.
- Khi mua VPS/Server từ các nhà cung cấp dịch vụ, bạn sẽ nhận được email chứa thông tin đăng nhập bao gồm username, password và IP server.
- Thông tin này từ cấp trên hay đồng nghiệp khi họ cấp quyền truy cập server cho bạn
Trong bài này chúng ta cần chuẩn bị:
Thông tin của SSH Server: User : adminvietnam Password : 1 IP : Sử dụng ngrok Port : Sử dụng ngrok
Đầu tiên, cài đặt ngrok cho máy Server theo các bước sau đây:
- Bước 1: Tải ngrok xuống hoạc thông qua ngrok download page
wget https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.tgz
- Bước 2: tiến hành giải nén file và di chuyển để thư mục PATH của bạn. Dưới đây là ví dụ dến /usr/local/bin
sudo tar xvzf ./ngrok-v3-stable-linux-amd64.tgz -C /usr/local/bin
- Bước 3: xác thực authtoken với tài khoản của bạn qua ngrok dashboard
ngrok authtoken [ngrok_authtoken]
Sau đó chúng ta tiến hành cài đặt SSH trên máy Server
sudo apt install -y openssh-server openssh-client
Khởi động SSH thông qua command:
sudo service ssh start
Kiểm tra trạng thái hoạt động của SSH:
sudo service ssh status
Bây giờ chúng ta sẽ sử dụng port forwarding của ngrok
ngrok tcp 22
Ở máy Client chúng ta tiến hành kết nối SSH tới máy Server
ssh -p 12627 [email protected]
Nhập password
Nếu giao diện hiện ra như hình dưới, chúng ta đã login thành công,
SSH vào Server sử dụng key
Ngoài cách SSH vào Server sử dụng password, bạn có thể SSH bằng cách sử dụng key.
Chúng ta cần tạo 1 cặp key bao gồm:
- Private Key: key này cần phải được lưu trữ cẩn thận, ai có key này thì có thể đăng nhập vào server mà không cần password. Key này được lưu trữ ở phía SSH Client.
- Public Key: key này không cần thiết phải giữ kỹ, key sẽ được lưu trữ trên server. Server nào có chứa key này thì bạn có thể dùng private key tương ứng để login vào.
Tạo Private Key & Public Key
Trên máy Client, mở terminal và chạy lệnh:
ssh-keygen -t rsa -b 2048 -f client_admin
Khi hiện ra thông báo “Enter passphrase”, bạn “Enter” 2 lần để bỏ qua việc nhập passpharse.
Sau khi chạy lệnh sẽ sinh ra hai file
- Client_admin
- Client_admin.pub
Chúng ta sẽ copy file client_admin.pub lên server
Add public key lên Server
Tiến hành SSH vào server như ở phần trên
Sau khi SSH thành công vào server, chúng ta chạy lệnh
ssh-keygen
Tiếp đó tạo và copy nội dung của public key vào file authorized_keys
nano /home/adminvietnam/.ssh/authorized_keys
Sau khi thành công chúng ta tiến hành ngắt kết nối và tiến hành SSH vào Server
Tiến hành SSH vào server sử dụng key
Mở terminal mới và chạy command
ssh -v -i client_admin -p 13463 [email protected]
Khi kết nối SSH từ phía client, file được sử dụng trong lệnh ssh là file private key (client_admin), như vậy kết nối này không cần password.
Lưu ý: trong bài viết này do ngrok hay bị die nên port có thể thay đổi ít nhiều.