Bài viết này giới thiệu các bạn về cách cấu hình login SSH bằng key trên hệ điều hành Linux.
SSH Keys là phương pháp xác thực đăng nhập với máy chủ qua SSH bằng việc đối chiếu giữa một cặp keys, bao gồm một khóa riêng tư(private key) và khóa công khai(public key). Có thể hiểu, Private Key là chìa khóa còn Public Key là ổ khóa.
Trong đó:
- Private Key là một file text chứa dữ liệu được mã hóa, sử dụng thay cho password, thường được lưu trữ cẩn thận trên máy tính bạn. Thông thường, private key có độ dài ít nhất 2048bit và có thể được mã hóa bằng cụm mật khẩu nhằm tránh trường hợp bị sử dụng ngoài ý muốn. Định dạng file tùy thuộc phần mềm tạo keys, có thể OpenSSH Key, PuTTy Private Key Files .ppk hoặc Bitvise Keypair Files .bkp ...
- Public Key là một file text chứa dữ liệu được mã hóa, có thể được cài đặt ở bất kỳ một server nào. Khi bạn gửi yêu cầu đăng nhập kèm private key, server sẽ kiểm tra sự trùng khớp với public key trên server nhằm xác thực yêu cầu truy cập. Định dạng file .pub
1. Tạo key SSH ở client(máy trạm)
1.1 Đối với Linux
Tạo cặp Keys có độ dài 4096bit với lệnh ssh-keygen -t rsa -b 4096
. Trong lúc cài đặt, chương trình sẽ hỏi bạn nơi lưu keys và mật khẩu sử dụng private key.
root@ngocdang:~# ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #Nơi lưu key
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): #Mật khẫu cho private key
Enter same passphrase again: #Xác nhận lại mật khẫu cho private key
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:NzjO2+pjrp2h5O6pGYGlNNZqDVUm0Ub1qEtxAYlhHqU root@ngocdang
The key's randomart image is:
+---[RSA 4096]----+
| BO*+o |
| =.=+ + |
| = E.. o . |
| o O + . |
| = o o S o |
| . o + o . |
| . o + |
| = +o= |
| o+B=Bo. |
+----[SHA256]-----+
Chúng ta có thể dùng passphrase để bảo mật thêm cho private key.
Keys được tạo theo thuật toán mã hóa RSA và lưu tại /root/.ssh/
. Trong đó, Private Key là id_rsa còn Public Key là id_rsa.pub.
Chú ý: Chúng ta cần phải giữ lại Private Key vì key là quan trọng cần bảo mật.
1.2 Đối với Windows
1.1.1. Dùng Cygwin
Chúng ta sử dụng phần mềm Cygwin sau đó chạy lệnh sau:
C:\Users\Name>ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\Name/.ssh/id_rsa): #Nơi lưu key
Created directory 'C:\Users\Name/.ssh'.
Enter passphrase (empty for no passphrase): #Mật khẫu cho private key
Enter same passphrase again: #Xác nhận lại mật khẫu cho private key
Your identification has been saved in C:\Users\Name/.ssh/id_rsa.
Your public key has been saved in C:\Users\Name/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:mH2XtSnvd96cgaj8TYiWZ++O922CGcFfgsJ/+pEgbxU Name@DESKTOP-7RPRNB3
The key's randomart image is:
+---[RSA 4096]----+
| |
| |
| . . .E |
| + o +o.+.|
| o S oo=o+o |
| .o+==+. |
| + =oO+. |
| o +.Oo.oO|
| o.o+*+B*|
+----[SHA256]-----+
1.1.2. Dùng PuTTyGen
Tạo SSH Keys bằng PuTTyGen: lựa chọn SSH-2 RSA và 2048 như hình bên dưới rồi ấn Generate
Sau khi tạo xong, màn hình hiển thị Public Key. Bạn có thể thiết lập Passphrase và Key Comment. Bạn nhấn Save private key để lưu lại.
1.1.3. Dùng ZOC Client
Tại giao diện chính của ZOC Client chúng ta chọn File rồi tiếp tục chọn Create SSH Keys Files...
Tạo SSH Keys bằng ZOC Client như hình bên dưới:
1.1.4. Dùng Bitvise SSH Client
Tại giao diện chính của Bitvise SSH Client chúng ta chọn Client key manager
Tạo SSH Keys bằng Bitvise SSH Client như hình bên dưới:
1.3 Đối với MacOS
Đối với hệ điều hành MacOS chúng ta tạo cặp Key có độ dài 4096bit sử dụng lệnh sau lệnh ssh-keygen -t rsa -b 4096
MacBook% ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/Name/.ssh/id_rsa): #Nơi lưu key
Enter passphrase (empty for no passphrase): #Mật khẫu cho private key
Enter same passphrase again: #Xác nhận lại mật khẫu cho private key
Your identification has been saved in /Users/Name/.ssh/id_rsa.
Your public key has been saved in /Users/Name/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:GMY6RmoQSoKW/4Vs+ZJG45tpdDA3sNdyRpiAo7zoLvQ Name@MacBook.local
The key's randomart image is:
+---[RSA 4096]----+
|+.. ... o |
|=+ o o o . |
|= o + O o |
| + + & O + |
|. + O @ S |
|.+ . O o |
|o . o * |
|.. E = |
|o. . |
+----[SHA256]-----+
Chúng ta có thể dùng passphrase để bảo mật thêm cho private key. Giúp cho việc kết nối ssh an toàn hơn
Keys được tạo theo thuật toán mã hóa RSA và lưu tại /Users/name/.ssh/
. Trong đó, Private Key là id_rsa còn Public Key là id_rsa.pub.
Chú ý: Chúng ta cần phải giữ lại Private Key vì key là quan trọng cần bảo mật.
2. Cấu hình login SSH bằng key ở Server
Bật đăng nhập bằng SSH Keys: tại tệp cấu hình /etc/ssh/sshd_config
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Sau đó, khởi động lại SSH Service
systemctl restart sshd
2.1. Cấu hình Public Key SSH trên Server theo cách thủ công
Đối với server Linux, chúng ta phải lưu Public Key tại /.ssh/authorized_keys
để sác thực đăng nhập sử dụng SSH Key. Chúng ta thực hiện như sau:
👉 Bước 1: Tạo thư mục ~/.ssh
mkdir ~/.ssh
Chúng ta thiết lập quyền chính xác và bảo mật cho thư mục ~/.ssh
:
chmod 700 ~/.ssh
👉 Bước 2: Dùng trình soạn thảo văn bản vi, nano,... để thêm Public Key vào /.ssh/authorized_keys
vi ~/.ssh/authorized_keys
Copy toàn bộ Public Key dán vào tệp ~/.ssh/authorized_keys
và dùng tổ hợp phím Esc sau đó :wq để lưu lại.
2.2. Cấu hình Public Key SSH trên Server dùng lệnh ssh-copy-id
Để đưa Public Key (id_rsa.pub) lên server, chúng ta sử dụng tool của Linux là ssh-copy-id
với cú pháp như sau:
ssh-copy-id -i [đường dẫn file] [username@remote-ip-address]
Trong đó:
- Đường dẫn file là /.ssh/id_rsa.pub
remote-ip-address là địa chỉ IP của Server.
MacBook% ssh-copy-id -i /Users/name/.ssh/id_rsa.pub root@192.168.22.160 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/name/.ssh/id_rsa.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@192.168.22.160's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@192.168.22.160'" and check to make sure that only the key(s) you wanted were added.
Public key lưu trên server ở đường dẫn mặc định ~/.ssh/authorized_keys
3. Cấu hình chỉ cho login SSH bằng key vào server
Để đảm bảo an toàn, chúng ta nên nên thay đổi port truy cập SSH thay vì dùng port 22 mặc định.
Các bước thay đổi port đăng nhập SSH:
Sử dụng trình soạn thảo vi chỉnh sửa file sshd_config
vi /etc/ssh/sshd_config
Tìm kiếm dòng
#Port 22
, bỏ dấu#
ở đầu và thay bằng port bạn muốn dùng, ví dụ port 2019Lưu ý: port cần phải free và không có service nào sử dụng để tránh xung đột.
Mở port
Mở port 2019
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 2019 -j ACCEPT
Khởi động lại SSHD service
systemctl restart sshd
Lưu lại iptables
systemctl save iptables
Kiểm tra port iptables
iptables -L -n
Bây giờ chúng ta login lại SSH sử dụng port mới.
Chúng ta nên vô hiệu hóa đăng nhập sử dụng mật khẩu bằng cách chỉnh sửa tham số sau trong tệp cấu hình /etc/ssh/sshd_config
.
PasswordAuthentication no
Sau đó, khởi động lại SSH Service
systemctl restart sshd
4. Cách kết nối SSH ở client dùng key
4.1. Đối với Windows
4.1.1. Dùng PuTTY
Sau khi cài đặt thành công PuTTY chúng ta thực hiện các bước sau để kết nối SSH. Như hình bên dưới:
Chúng ta thực hiện các bước như sau:
- Bước 1: Điền địa chỉ ip của VPS vào ô Host Name(or IP address)
- Bước 2: Điền vào ô port số port của VPS
- Bước 3: Chọn SSH
- Bước 4: Tại ô Saved Sessions điền tên theo ý muốn của các bạn. Sau đó chọn save
- Bước 5: Chọn Open và thực hiện điều khiển VPS
4.1.2. Dùng ZOC Client
Sau khi cài đặt thành công ZOZ CLient chúng ta mở chương trình lên. Mặc định box QuickConnection sẽ hiện ra. Nhập các thông tin cần thiết như hướng dẫn bên dưới:
Thực hiện các bước như sau:
- Bước 1: Connect To : Nhập địa chỉ ip của VPS
- Bước 2: Port : Mặc định là 22, nếu dùng vps có số port khác thì chúng ta điền số port của vps như ví dụ trên là port 2019
- Bước 3: Session Profile : Chọn standard.zoc
- Bước 4: Connection Type: Chọn Secure Shell
- Bước 5: Emulation : Chọn Linux
- Bước 6: Username : Chọn root(quản trị cao nhất trong Linux)
- Bước 7: Password : Nhập password khi bạn tạo key SSH
4.1.3. Dùng Bitvise SSH Client
Sau khi cài đặt thành công ZOZ CLient chúng ta mở chương trình lên. Để đăng nhập chúng ta cần có đầy đủ thông tin để truy cập SSH của server. Nhập các thông tin cần thiết như hướng dẫn bên dưới:
Thực hiện các bước như sau:
- Bước 1: Nhập IP tại Host
- Bước 2: Nhập Port
- Bước 3: Nhập username
- Bước 4: Chọn kiểu bảo mật là password
- Bước 5: Nhập password
- Bước 6: Click "Login"
4.2. Đối với MacOS, Linux
4.2.1. File private key nằm ở đường dẫn default
Chúng ta chạy lệnh sau để điều khiển VPS cú pháp như sau:
ssh username@HOST -p number
Ví dụ: Kết nối ssh với VPS có IP 192.168.1.2 và port 2019 chúng ta thực hiện như sau:
MacBook% ssh root@192.168.1.2 -p 2019
Enter passphrase for key '/Users/Name/.ssh/id_rsa':
4.2.2. File private key không nằm ở đường dẫn default
Nếu file file private key không nằm ở đường dẫn default thì chúng ta sử dụng tùy chọn -i
theo sau là đường dẫn của file private key cú pháp như sau:
ssh -i [file private key] username@HOST -p number
Ví dụ: Kết nối VPS khi file private key nằm trong đường dẫn /Users/Name/test
không phải là đường dẫn default chúng ta thực hiện như bên dưới
MacBook% ssh -i /Users/Name/test root@172.150.227.128 -p 2019
Enter passphrase for key '/Users/Name/test':