Tools

Ở đây, bạn được cung cấp một tài khoản máy Remote (server), giả sử tài khoản đó có tên (user) là username, có password là yourpassword - máy server này có địa chỉ IP hoặc domain trỏ đến server là remoteserver. Với thông tin như vậy, làm sao để kết nối đến Shell của Server! Phần này sẽ hướng dẫn cơ bản sử dụng OpenSSH Client để kết nối.

Cài đặt OpenSSH Client

Kiểm tra: Mở terminal (trên Windows dùng cmd hoặc PowerShell) gõ lệnh:

ssh -V

Nếu báo không có lệnh ssh thì bạn cần cài đặt vào.

Cài đặt OpenSSH trên Windows

Nó cũng chính là gói OpenSSH Server, cài đặt như sau: Tải về OpenSSH - vào đường link Win OpenSSH, chọn đúng phiên bản phù hợp với hệ thống của bạn (chọn OpenSSH-Win32.zip hay OpenSSH-Win64.zip theo kiến trúc Windows của bạn), File tải về giải nén vào thư mục muốn cài đặt, ví dụ chọn giải nén vào thư mục C:\OpenSSH

SSH Windows

OpenSSH Client đã có ở thư mục C:\OpenSSH, để gõ lệnh ssh bất kỳ đầu bạn cần thêm đường dẫn C:\OpenSSH vào biến môi trường PATH của Windows

Từ File Explorer nhấn phải chuột vào Computer (hoặc This PC) trên Windows 10, chọn Properties, cửa sổ System xuất hiện chọn (1) Advanced System settings, chọn (2) Enviroment variables .., chọn (3) Nháy kép vào Path, (4) Thêm thư mục C:\OpenSSH vào cuối

SSH Windows

Có thể cần khởi động lại máy để có hiệu lực. Mở Powershell hoặc Cmd gõ lệnh kiểm tra

SSH Windows

Cài đặt OpenSSH macOS

Trên macOS thì SSH Client cài đặt sẵn, gõ lệnh sau để kiểm tra ssh -V

SSH Windows

Cài đặt OpenSSH trên Ubuntu

Với Ubuntu Destop, SSH Client cũng có mặc định, nếu không thấy gõ lệnh để cài, cuối cùng là kiểm tra như hình

sudo apt-get install openssh-client
SSH Windows

Sử dụng SSH Client cơ bản

Giờ trên máy của bạn (macOS, Windows, Linux) đều có lệnh ssh, nó là ssh client cơ bản để kết nối đến Server. Giả sử tải khoản SSH máy chủ là testuser, có password là yourpassword - máy server này có địa chỉ IP hoặc domain trỏ đến server là remoteserver (ví dụ 192.168.1.99 hay yourdomain.com).

Thực hiện kết nối SSH đến Server

ssh username@remoteserver

username@remoteserver nghĩa là tài khoản username tại máy chủ remoteserver. Lệnh này sẽ bắt đầu thực hiện kết nối SSH đến server có địa chỉ remoteserver, mặc định sẽ dùng cổng 22, nó sẽ hỏi password - bạn nhập password vào, nếu thành công - bạn sẽ ở dòng lệnh của máy Server.

Ví dụ, máy Windows Remote có dịch vụ SSH, tài khoản testuser, địa chỉ IP 192.168.1.52, để kế nối đến máy này thực hiện lệnh SSH ở client như sau:

ssh testuser@192.168.1.52

Sau khi nhập lệnh, do lần đầu kết nối SSH đến IP này, nên ssh có hỏi về ECDSA key fingerprint- gõ yes, rồi nhập password theo yêu cầu, như hình dưới

SSH Windows

Sau khi nhập password - kết nối thành công tới dòng lệnh của máy Windows (Remote Server)

SSH Windows

Khi đã kết nối SSH tới Server Windows rồi, có thể gõ powershell.exe để chuyển sử dụng PowerShell, từ đó thực hiện các tác vụ trên Windows.

Tương tự, nếu Server là Linux CentOS hay Ubuntu thì lệnh kết nối ssh như trên sẽ giúp bạn vào thẳng terminal của máy Server - từ đó thi hành các lệnh của Server


Nếu cổng kết nối khác 22 ví dụ cổng 2222 thì cho vào tham số -p 2222

ssh -p 2222 username@remoteserver

Ngoài ra để hiện một số thông tin thì cho vào tham số -v, hiện thị thông tin thật chi tiết quá trình kết nối (giúp gõ rối nếu lỗi) thì thâm vào tham số -vvv, nếu muốn nén dữ liệu khi truyền qua SSH thì thêm vào tham số -C

ssh -p 2222 -vvv username@remoteserver

Ngoài cách kết nối yêu cầu xác thực bằng cách nhập password mà SSH Server cung cấp như trên, cách phổ biến - nhanh chóng - an toàn hơn là dùng cơ chế xác thực Public/Private key - sau khi giới thiệu file cấu hình SSH Client phần sau, chúng ta sẽ tiến hành tạo cặp key Public/Private và dùng cơ chế xác thực này để kết nối Tạo Public/Private SSH Key và xác thực với authorized_keys

File cấu hình SSH Client

ssh (ssh client) khi chạy, thực hiện các kết nối - nó sẽ tìm file cấu hình tại đường dẫn ~/.ssh/config, nếu có file này nó dùng file đó thiết lập các thông tin bổ sung kết nối.

Trong đường dẫn file trên, ~ cho biết đó là thư mục của User hiện tại, như vậy mỗi user của máy có thể có file config riêng.

Ví dụ:

  • Trên máy macOS, user có tên abc thì ~/.ssh/config có đường dẫn đầy đủ là /Users/abc/.ssh/config, macOS có thể dùng ngày file config /etc/ssh/ssh_config
  • Trên Windows, user có tên abc thì ~/.ssh/config có đường dẫn đầy đủ là C:\Users\abc\.ssh\config
  • Trên Linux (Ubuntu, CentOS), user có tên abc thì ~/.ssh/config có đường dẫn đầy đủ là /home/abc/.ssh/config

Như vậy, nếu file config cho user abc trên hệ thống chưa có, thì cần tạo file này, nằm đúng ở đường dẫn như trên.

Chú ý: trên Windows, để tạo được thư mục .ssh thì bạn dùng PowerShell (không dùng Cmd), và gõ lệnh mkdir để tạo thư mục

mkdir C:\Users\abc\.ssh

Có thư mục .ssh rồi mới tạo file config trong đó.

File config có cấu trúc, chia thành từng khối - mỗi khối bắt đầu bằng Host hostname, trong đó hostname tên do bạn đặt, hoặc là IP của Server hoặc domain trỏ đến server. Sau đó đến các cấu hình. Khối này sẽ áp dụng nếu khi lệnh kết nối ssh username@remoteserver có thành phần remoteserver giống với hostname

Ví dụ - hãy xem file config sau:

# Khối thứ nhất
Host 192.168.1.2
    Port 2222
# Khối thứ hai
Host 192.168.1.3
    Port 3333

Khi bạn kết nối bằng lệnh:

ssh user@192.168.1.2

Thì phần remoteserver phù hợp với khối thứ nhất, do đó nó sẽ áp dụng cấu hình thứ nhất - và kết nối bằng cổng 2222, tương tự nếu

ssh user@192.168.1.3

Thì sẽ dùng cổng 3333 để kết nối

Thậm chí bạn đặt tên host bằng tên nào đó do bạn đặt, ví dụ:

Host ten-rat-dep
    # cổng
    Port 22
    # host thật
    HostName 192.168.1.52

Thì lúc đó bạn gõ lệnh kết nối

ssh testuser@ten-rat-dep

Thì có nghĩa là thực hiện kết nối đến 192.168.1.52 với cổng 22 và user là testuser. Thậm chỉ bạn có thể thiết lập User mặc định luôn, ví dụ:

Host ten-rat-dep
    # User mặc định
    User testuser
    # cổng
    Port 22
    # host thật
    HostName 192.168.1.52

Lúc đó, để thực hiện kết nối trên, đơn giản gõ

ssh ten-rat-dep

Ngoài Port User HostName tham khảo một số cấu hình nữa như:

  • PreferredAuthentications publickey bật chế độ xác thực bằng SSH Key trước
  • IdentityFile "path/../file_private_key" vị trí file Private key

Còn nhiều cấu hình khác, tuy nhiên các thiết lập trên đã đủ cho hầu hết các trường hợp, khối config cơ bản

Host ten-rat-dep
    Port 2222
    HostName 192.168.1.52
    User testuser
    PreferredAuthentications publickey
    IdentityFile "C:\MySSHKey\id_rsa"

Chú ý: trong file config này không thể thiết lập Password, nên nếu muốn gõ lệnh kết nối mà không phải nhập pass thì tham khảo Tạo Public/Private SSH Key và xác thực với authorized_keys

Đăng ký theo dõi ủng hộ kênh