Cách tạo SSH Key trên Ubuntu 22.04, 20.04 Linux giúp thông tin đăng nhập của bạn an toàn hơn khi sử dụng mật khẩu để kết nối SSH, SFTP đến Server.
SSH Key trên Debian 10, 11 hoặc Ubuntu hay centOS là một cách xác thực khi login với Server thông qua SSH thay vì kết nối bằng mật khẩu. Ví dụ thông thường bạn connect đến server với câu lệnh ssh user@ip, điều này sẽ kém an toàn hơn nếu bạn để lộ mật khẩu. Khi đó với keyfile
nếu hacker biết mật khẩu của bạn nhưng cũng sẽ an toàn hơn vì cần xác thực với public key.
Cách tạo SSH Key trên Ubuntu 22.04, 20.04 & Linux Debian
Generate ssh key Debian Linux hoặc Ubuntu với công cụ puttygen giúp thông tin của bạn an toàn hơn khi sử dụng mật khẩu để kết nối SSH đến Server. Bài viết này, ItsmeIT sẽ hướng dẫn bạn cách để tạo ra một file ppk, pem, pub để truy cập VPS thông qua SSH (SFTP).
Bước 1. Cài đặt Putty tools và OpenSSH để generate ssh key Debian, Ubuntu
Putty hỗ trợ thiết lập tạo SSH Key trên Ubuntu 22.04 | 20.04 & Debian, cung cấp cho người dùng kết nối đến một máy chủ khác từ xa thông qua giao thức SSH (Secure Shell), tạo khóa bảo mật với các thuật toán mã hóa như: 3DES, Arcfour, Blowfish, DES, và một khóa công khai để nhận diện đi kèm với SCP và SFTP. Chạy câu lệnh sau để cài đặt putty-tools:
sudo apt update && sudo apt upgrade sudo apt install putty-tools
Khi tạo SSH Key trên Debian hoặc Ubuntu bạn cũng sẽ cần phải cài đặt OpenSSH nếu chưa có. Nếu nó đã có sẵn thì bỏ qua, câu lệnh dưới đây để cài đặt:
sudo apt install openssh-server sudo systemctl start ssh sudo systemctl enable ssh
Bước 2. Tạo SSH Key để xác thực kết nối đến Server
Vì itsmeit sử dụng Ubuntu để làm việc và kết nối đến server (VPS), vì vậy mình sẽ tạo SSH Key trên Ubuntu với đuôi của nó là (*.ppk) và (*.pem). Bạn cũng có thể convert nó sang đuôi (*.pub) để sử dụng trên Puty tool
. Câu lệnh bên dưới đây sẽ tạo ra 1 SSH Key Linux có đuôi (*.ppk).
puttygen -t rsa -b 2048 -C "user@ip" -o keyfile.ppk

- User ở đây bạn có thể sử dụng root hoặc một username có tồn tại trên server của bạn.
- IP là địa chỉ IP để kết nối đến server của bạn, nếu bạn đã
transfer
tên miền đến ip thì cũng có thể sử dụng luôn tên miền. - Thiết lập mật khẩu có chữ Hoa, chữ thường và số.
Bước 3. Tạo Authorized Key để xác thực với SSH Key (Public Key)
Cách 1. Copy mã public key đến Server bằng câu lệnh viết tắt
Khi đã tạo được một SSH Key trên Ubuntu 22.04, 20.04 hoặc Debian dạng “keyfile.ppk”, bước tiếp theo là connect đến server bằng user root
, coppy nội dung của keyfile.ppk vào file authorized_keys nằm trong thư mục .ssh. Câu lệnh dưới đây để bạn làm điều đó.
puttygen -L itsmeit.ppk | ssh root@ip "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Trong câu lệnh trên itsmeit.ppk là tên file, mình chạy lệnh terminal từ chính thư mục chứa nó vì vậy không cần đường dẫn chính xác đến file. Bạn có thể sửa đường dẫn chính xác đến keyfile của mình sau đó Enter và nhập mật khẩu của user root để kết nối đến server.
Khuyến nghị khi tạo SSH Key trên Ubuntu 22.04 và 20.04 hoặc Debian:
- Đối với user root thì thư mục .ssh nên đặt trong thư mục
/root
vì sau khi kết nối đến server userroot
sẽ được di chuyển đến /root. - Đối với user thường bạn có thể chỉ định cho user đến thư mục nào đó sau khi kết nối. Ví dụ như bạn có thể đặt thư mục .ssh trong thư mục /var/www/ để quản lý project.
Cách 2. Copy nội dung SSH key đến Server thủ công
Connect đến server bằng ssh: ssh root@ip (host).
ssh root@ip
Sau khi đã kết nối bạn nên đảm bảo rằng thư mục ~/.ssh tồn tại. Nếu chưa có thì tạo ra nó:
mkdir -p ~/.ssh
Mở terminal từ thư mục chứa keyfile bạn đã tạo và chạy lệnh sau để lấy khóa key.
puttygen -L keyfile.ppk

Bây giờ cần tạo file authorized_keys nằm trong thư mục .ssh và dán khóa key vào. Bấm Ctrl + X chọn Y để lưu lại.
nano ~/.ssh/authorized_keys
Hoặc sử dụng lênh echo để add khóa key như sau:
echo khóa_key >> ~/.ssh/authorized_keys

Tiếp theo bạn cần phân quyền cho thư mục .ssh
.
chmod -R go= ~/.ssh
Nếu bạn đang sử dụng tài khoản root để tạo, thiết lập SSH key trên Debian hoặc Ubuntu cho user thường, thì điều quan trọng là quyền (permission) thư mục ~/.ssh thuộc về user đó. Hãy thay user:group
bằng user và group trên hệ thống của bạn.
chown -R user:group ~/.ssh
Cuối cùng là reset lại ssh.
systemctl restart ssh
Bước 4. Sử dụng Terminal kết nối vào Server bằng SSH key
Sau khi đã tạo SSH Key trên Ubuntu 22.04, 20.04 hoặc Debian, hãy chạy câu lệnh để convert
file ppk đã tạo sang đuôi pem, nhập password
của file khi được hỏi.
puttygen /path/keyfile.ppk -O private-openssh -o /path/keyfile.pem
Tiếp tục phần quyền cho keyfile.pem là 600
sudo chmod -R 600 /path/keyfile.pem

Để kết nối đến server với keyfile, trên terminal chạy câu lệnh
ssh -i /path/keyfile.pem user@ip
Bước 5. Tắt xác thực mật khẩu trên máy chủ của bạn
Trước khi làm điều này, bạn cần chắc chắn là đã kết nối thành công đến server bằng SSH Key đã tạo, đảm bảo rằng bạn vẫn có thể truy cập với quyền cao nhất (root) trên server của bạn. Thao tác này sẽ block đăng nhập SSH qua mật khẩu và chỉ có thể sử dụng keyfile. Bạn cần lưu lại keyfile và ghi nhớ mật khẩu sau khi đã tạo và sử dụng SSH Key trên Ubuntu 22.04 | 20.04 và Debian Linux.
Kết nối đến server bằng SSH Key sau đó sửa config ssh trong file sshd_config
sudo nano /etc/ssh/sshd_config
Tìm kiếm dòng PasswordAuthentication, bỏ ghi chú dòng này (xóa dấu # ở đầu) và đặt giá trị thành “no“. Điều này sẽ vô hiệu hóa khả năng đăng nhập qua SSH của bạn bằng mật khẩu tài khoản:
Lưu và đóng file bằng cách nhấn CTRL + X, nhập phím chữ Y
để xác nhận -> Enter. Cuối cùng hãy restart lại SSH để các thay đổi có hiệu lực.

Bước 6. Một số câu lệnh sử dụng SSH Keys
- Lệnh đổi mật khẩu SSH Key
puttygen keyfile.ppk -P
- Lệnh convert keyfile
puttygen keyfile.ppk -O private-openssh -o keyfile
Trong đó keyfile bạn có thể convert sang đuôi ppk, pub, pem. Bạn nên sao lưu SSH Key đến một nơi an toàn và ghi nhớ mật khẩu để đăng nhập.
Trên đây là các bước hướng dẫn để tạo SSH Key trên Ubuntu 22.04 và 20.04 hoặc Debian 10, 11 giúp bạn an toàn hơn khi đăng nhập vào server qua SSH SFTP, nếu có câu hỏi hãy để lại bình luận phía dưới nhé!.
– Advertising –