Ở đâ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
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
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
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
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
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
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)
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ướcIdentityFile "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