Lệnh ssh (secure shell) trong Linux là một công cụ cho phép người dùng truy cập từ xa vào một máy chủ hoặc thiết bị Linux khác thông qua kết nối mạng bảo mật. Sử dụng giao thức mã hóa ssh, thông tin được mã hóa và an toàn trong quá trình truyền tải qua mạng.
Lệnh ssh có thể được sử dụng để thiết lập kết nối từ xa đến một máy tính hoặc thiết bị Linux khác, thực hiện các tác vụ quản trị, truyền tập tin và thực thi các lệnh trên máy chủ từ xa.
Để sử dụng lệnh ssh, người dùng cần biết địa chỉ IP hoặc tên miền của máy chủ cần kết nối, tên đăng nhập và mật khẩu của tài khoản đăng nhập. Sau khi nhập thông tin này, người dùng sẽ được yêu cầu xác thực và nếu xác thực thành công, kết nối đến máy chủ từ xa sẽ được thiết lập.
Các tham số thường được sử dụng trong lệnh ssh
bao gồm:
-l
: Cho phép người dùng đăng nhập với tên đăng nhập khác với tên đăng nhập mặc định trên máy đích.-p
: Chỉ định cổng sử dụng để kết nối đến máy chủ. Mặc định là cổng 22.-i
: Chỉ định khóa SSH để sử dụng để xác thực thay vì sử dụng mật khẩu đăng nhập.-t
: Tạo một phiên kết nối TTY mới.-X
: Kích hoạt chức năng chuyển tiếp X11, cho phép chạy ứng dụng đồ họa từ xa.-C
: Kích hoạt nén dữ liệu trên kênh SSH để giảm lưu lượng mạng.-f
: Chạy phiên SSH ở chế độ nền.-N
: Không thực hiện lệnh đăng nhập SSH sau khi kết nối.-L
: Thiết lập chuyển tiếp cổng từ máy đích đến máy khách.-R
: Thiết lập chuyển tiếp cổng từ máy khách đến máy đích.
Ví dụ:
- Kết nối đến máy chủ với tên đăng nhập và địa chỉ IP:
ssh username@192.168.1.100
Kết nối đến máy chủ trên cổng khác:
ssh -p 2222 username@192.168.1.100
Sử dụng khóa SSH để xác thực đăng nhập:
ssh -i ~/.ssh/id_rsa username@192.168.1.100
Thiết lập chuyển tiếp cổng từ máy đích đến máy khách:
ssh -L 8080:localhost:80 username@192.168.1.100
Thiết lập chuyển tiếp cổng từ máy khách đến máy đích:
ssh -R 8080:localhost:80 username@192.168.1.100
Để tạo một SSH key pair trên Linux, ta sử dụng lệnh ssh-keygen
. Bạn có thể làm theo các bước sau:
- Mở Terminal và chạy lệnh sau:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Ở đây, -t
chỉ định thuật toán mã hóa sử dụng để tạo key. Trong ví dụ này, chúng ta sử dụng RSA. -b
chỉ định độ dài key được tạo ra, ở đây là 4096 bit. -C
là để thêm một comment vào key pair.
- Bạn sẽ nhận được một thông báo yêu cầu xác nhận về nơi lưu trữ key pair. Bạn có thể chọn tùy chọn mặc định hoặc tùy chỉnh đường dẫn cho việc lưu key pair.
- Tiếp theo, bạn sẽ được hỏi để tạo passphrase để bảo vệ key pair. Passphrase là một mật khẩu mà bạn sẽ sử dụng để bảo vệ key pair, nó sẽ được sử dụng để giải mã private key khi bạn sử dụng nó. Nếu bạn không muốn sử dụng passphrase, bạn có thể bỏ qua bước này bằng cách không nhập bất kỳ giá trị nào và chỉ cần nhấn Enter.
- Sau khi bạn đã tạo key pair thành công, public key được lưu trong file
~/.ssh/id_rsa.pub
. Public key này sẽ được sử dụng để xác thực khi bạn kết nối tới remote server. Private key được lưu trong file~/.ssh/id_rsa
. Bạn không nên chia sẻ private key này với bất kỳ ai.
Ví dụ tạo SSH key pair:
ssh-keygen -t rsa -b 4096 -C "my_email@example.com"
Lưu SSH key pair tại đường dẫn mặc định, passphrase là “password”:
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Kết quả sau khi tạo thành công:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:nWdhyM/Sc1V+ZzRINx7QLj+4e4tFKdnytRb9JyF5E+8 my_email@example.com
The key's randomart image is:
+---[RSA 4096]----+
| .. |
| ..o+o |
| o .B. |
| o E.O. |
| + . =oS. |
| o.o=.= |
| ..o+o |
| ... |
| .oo. |
+----[SHA256]-----+
Sau khi bạn đã tạo cặp khóa SSH, bạn cần phải sao chép khóa công khai (public key) lên server mà bạn muốn truy cập bằng SSH. Bạn có thể làm điều này bằng cách sử dụng một số cách khác nhau, nhưng phổ biến nhất là sử dụng công cụ ssh-copy-id
. Điều này sẽ sao chép khóa công khai của bạn vào file authorized_keys
trên server.
Để sao chép khóa công khai của bạn lên server, hãy sử dụng lệnh sau đây, trong đó <remote_host>
là địa chỉ IP hoặc tên miền của server:
ssh-copy-id user@<remote_host>
Sau khi bạn đã nhập mật khẩu của tài khoản user
trên server, khóa công khai của bạn sẽ được sao chép vào file authorized_keys
trong thư mục .ssh
của tài khoản user
. Bây giờ bạn có thể truy cập vào server bằng SSH mà không cần phải nhập mật khẩu nữa.