Chuyển tới nội dung chính

SSH - Cheatsheet

Cheatsheet này cung cấp các hướng dẫn về việc sử dụng SSH.

cửa hàng
roadmaps
cheatsheet
tài liệu phỏng vấn

🔖 Gợi ý từ Admin

📝 Tài liệu phỏng vấn kiến thức lập trình: Xem tại đây!!!

📌 Tìm hiểu về thuật toán: Xem tại đây!!!

📌 Roadmaps - Lộ trình trở thành một lập trình viên: Xem tại đây!!!

⚡️ Cheatsheet các ngôn ngữ lập trình: Xem tại đây!!!

⚡️ Handbook lập trình: Xem tại đây!!!

I. Tổng hợp SSH Cheatsheet

1. Cơ bản

⚡️ Kết nối (Connecting)

# Kết nối đến một máy chủ (cổng mặc định là 22)
$ ssh [email protected]

# Kết nối thông qua một cổng cụ thể
$ ssh [email protected] -p 6222

# Kết nối qua tệp pem (với quyền 0400)
$ ssh -i /path/file.pem [email protected]

Lưu ý: Thay thế root, 192.168.1.5, 6222, và /path/file.pem bằng thông tin thực tế.

⚡️ Kết nối (Executing)

# Kết nối đến một máy chủ (cổng mặc định là 22)
$ ssh [email protected]

# Kết nối thông qua một cổng cụ thể
$ ssh [email protected] -p 6222

# Kết nối qua tệp pem (với quyền 0400)
$ ssh -i /path/file.pem [email protected]

⚡️ Tập tin và khóa cấu hình SSH

Tập tin/Thư mụcMô tả
/etc/ssh/ssh_configCấu hình toàn hệ thống
~/.ssh/configCấu hình riêng của người dùng
~/.ssh/id_{type}Khóa riêng
~/.ssh/id_{type}.pubKhóa công khai
~/.ssh/known_hostsHost đã đăng nhập
~/.ssh/authorized_keysKhóa đăng nhập được ủy quyền

⚡️ Các tùy chọn SCP

Tùy chọnMô tả
scp -rSao chép đệ quy toàn bộ thư mục
scp -CNén dữ liệu
scp -vHiển thị thông tin chi tiết
scp -P 8080Sử dụng một Cổng cụ thể
scp -BChế độ hàng loạt (Ngăn mật khẩu)
scp -pBảo toàn thời gian và chế độ

⚡️ SCP: "Secure Copy Protocol" hoặc "Secure Copy Program". Đây là một giao thức và một tiện ích trong Unix và các hệ điều hành tương tự như Linux, được thiết kế để truyền tệp qua mạng một cách bảo mật. SCP sử dụng SSH (Secure Shell) để mã hóa dữ liệu trước khi truyền đi, giúp đảm bảo tính an toàn của thông tin trong quá trình truyền tệp từ một máy chủ đến máy tính khác. Điều này làm cho SCP trở thành một cách an toàn và hiệu quả để chuyển tệp giữa các máy chủ hoặc từ máy tính cá nhân lên máy chủ.

# Sao chép từ xa về máy local
$ scp user@server:/dir/file.ext dest/

# Sao chép giữa hai máy chủ
$ scp user@server:/file user@server:/dir

# Sao chép từ local lên xa
$ scp dest/file.ext user@server:/dir

# Sao chép một thư mục đầy đủ
$ scp -r user@server:/dir dest/

# Sao chép tất cả các tệp từ một thư mục
$ scp user@server:/dir/* dest/

# Sao chép từ một thư mục trên máy chủ về thư mục hiện tại
$ scp user@server:/dir/* .

⚡️ Config mẫu

# Máy chủ server1
HostName 192.168.1.5
User root
Port 22
IdentityFile ~/.ssh/server1.key

# Kích hoạt bằng tên viết tắt
$ ssh server1

👉 Xem thêm: Full Config Options

⚡️ ProxyJump: trong SSH được sử dụng để thiết lập một kết nối SSH thông qua một hoặc nhiều máy chủ trung gian (proxy). Điều này hữu ích khi bạn cần kết nối đến một máy chủ từ xa thông qua các máy chủ trung gian để bảo mật hoặc vượt qua các tường lửa mạng.

# Thiết lập một kết nối SSH đến remote_host2 thông qua proxy_host1.
$ ssh -J proxy_host1 remote_host2

# Sử dụng tài khoản user khi kết nối đến cả proxy_host1 và remote_host2.
$ ssh -J user@proxy_host1 user@remote_host2

# Thiết lập kết nối đa bước, điều này có nghĩa là truyền qua nhiều máy chủ trung gian (proxy_host1 và proxy_host2) trước khi đến remote_host3.
$ ssh -J user@proxy_host1:port1,user@proxy_host2:port2 user@remote_host3

⚡️ ssh-copy-id: được sử dụng để sao chép khóa công khai của người dùng lên máy chủ từ xa, làm cho quá trình xác thực bằng khóa có thể thực hiện mà không cần mật khẩu. Nó giúp thêm khóa công khai vào tệp ~/.ssh/authorized_keys trên máy chủ từ xa.

# Sao chép khóa công khai mặc định của người dùng hiện tại lên máy chủ từ xa server.
$ ssh-copy-id user@server

# Sao chép khóa công khai mặc định của người dùng hiện tại lên máy chủ từ xa với tên định danh là server1.
$ ssh-copy-id server1

# Sao chép một khóa công khai cụ thể (trong ví dụ này là id_rsa.pub) từ đường dẫn đã chỉ định lên máy chủ từ xa.
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@server

2. SSH keygen

⚡️ ssh-keygen: được sử dụng để tạo cặp khóa SSH (khóa công khai và khóa riêng tư).

$ ssh-keygen -t rsa -b 4096 -C "[email protected]"
-t Loại khóa
-b Số bit trong khóa
-C Thêm một comment mới
# Tạo một khóa RSA 4096 bit với địa chỉ email làm comment
  • -t rsa: Chọn loại khóa là RSA.
  • -b 4096: Chọn số bit trong khóa là 4096 bit, đây là một độ dài khóa mạnh mẽ và an toàn.
  • -C "[email protected]": Cung cấp một comment mới cho khóa, thường là địa chỉ email để nhận biết.

Sau khi chạy lệnh này, khóa công khai (id_rsa.pub) và khóa riêng tư (id_rsa) sẽ được tạo trong thư mục ~/.ssh/. Khóa công khai có thể được chia sẻ với các máy chủ để xác thực, trong khi khóa riêng tư được giữ một cách an toàn trên máy local.

⚡️ known_hosts

Trong quản lý SSH, tệp known_hosts lưu trữ các khóa host của các máy chủ đã được xác thực trước đó. Các tùy chọn trên được sử dụng để tìm kiếm và xóa các bản ghi từ known_hosts:

# Tìm kiếm từ known_hosts
$ ssh-keygen -F <ip/hostname>

# Xóa từ known_hosts
$ ssh-keygen -R <ip/hostname>
  • ssh-keygen -F <ip/hostname>: Tìm kiếm bản ghi trong known_hosts dựa trên địa chỉ IP hoặc tên máy chủ. Nếu tìm thấy, nó sẽ hiển thị thông tin của bản ghi đó.
  • ssh-keygen -R <ip/hostname>: Xóa bản ghi trong known_hosts dựa trên địa chỉ IP hoặc tên máy chủ. Khi bạn kết nối đến một máy chủ mới và muốn xác thực, bản ghi mới sẽ được thêm vào known_hosts.

⚡️ Tạo key (Generate)

# Tạo một key theo cách tương tác
$ ssh-keygen

# Chỉ định tên tệp
$ ssh-keygen -f ~/.ssh/filename

# Tạo public key từ private key
$ ssh-keygen -y -f private.key > public.pub

# Thay đổi comment
$ ssh-keygen -c -f ~/.ssh/id_rsa

# Thay đổi passphrase của private key
$ ssh-keygen -p -f ~/.ssh/id_rsa
  • ssh-keygen: Tạo một cặp khóa mới theo cách tương tác. Bạn sẽ được hỏi về nơi lưu trữ khóa và passphrase (nếu có).
  • ssh-keygen -f ~/.ssh/filename: Chỉ định tên tệp khi tạo khóa.
  • ssh-keygen -y -f private.key > public.pub: Tạo public key từ private key.
  • ssh-keygen -c -f ~/.ssh/id_rsa: Thay đổi comment của khóa.
  • ssh-keygen -p -f ~/.ssh/id_rsa: Thay đổi passphrase của private key.

⚡️ Loại khoá (Key type)

rsa
ed25519
dsa
ecdsa
  • RSA (Rivest-Shamir-Adleman): RSA là một thuật toán mật mã sử dụng cặp khóa công khai và riêng tư. Khóa công khai được sử dụng để mã hóa dữ liệu, trong khi khóa riêng tư được sử dụng để giải mã dữ liệu. RSA thường được sử dụng cho chữ ký số, trao đổi khóa an toàn, và mã hóa thông tin.
  • Ed25519: Là một thuật toán chữ ký số sử dụng đường cong elliptic (EdDSA) trên trường số nguyên modulo 2^255 - 19. Nó mang lại hiệu suất cao và độ an toàn mạnh mẽ, đặc biệt là trong ngữ cảnh của việc xác thực.
  • DSA (Digital Signature Algorithm): DSA là một thuật toán chữ ký số sử dụng đường cong elliptic để tạo chữ ký và xác minh chữ ký số. Nó thường được sử dụng trong quá trình chứng thực và trao đổi khóa.
  • ECDSA (Elliptic Curve Digital Signature Algorithm): Giống như DSA, nhưng ECDSA sử dụng đường cong elliptic thay vì số nguyên lớn để tạo và xác minh chữ ký số. Nó được sử dụng trong các giao thức mạng an toàn như SSH và TLS.

⚡️ Định dạng khoá (Key format)

PEM
PKCS8
  • PEM (Privacy Enhanced Mail): PEM là một chuẩn được sử dụng để biểu diễn dữ liệu nhị phân trong dạng văn bản. Trong bối cảnh khóa, định dạng PEM thường được sử dụng để lưu trữ khóa riêng tư và khóa công khai dưới dạng văn bản, giúp dễ dàng đọc và chia sẻ.
  • PKCS8 (Public-Key Cryptography Standards #8): PKCS8 là một chuẩn định dạng cho lưu trữ khóa riêng tư trong ngữ cảnh của hệ thống quản lý khóa. Nó định nghĩa cách bao gồm khóa riêng tư và thông tin liên quan như thuật toán mã hóa trong một cấu trúc định dạng chuẩn.

II. Tài liệu tham khảo

Chia sẻ: