Hướng dẫn tạo ssh key và cấu hình ssh

,

・Published on:

Trên máy host:

  • Trên máy host, generate key:
ssh-keygen -t ed25519 -C "email@a.c"
ssh-keygen -t rsa -b 4096
ssh-keygen -t dsa 
ssh-keygen -t ecdsa -b 521

-b “Bits” Tùy chọn này chỉ định số bit trong khóa. Các quy định chi phối trường hợp sử dụng SSH có thể yêu cầu sử dụng độ dài khóa cụ thể. Nhìn chung, 2048 bit được coi là đủ cho khóa RSA.

-e “Xuất” Tùy chọn này cho phép định dạng lại các khóa hiện có giữa định dạng tệp khóa OpenSSH và định dạng được ghi trong RFC 4716 , “Định dạng tệp khóa công khai SSH”.

-p “Thay đổi mật khẩu” Tùy chọn này cho phép thay đổi mật khẩu của tệp khóa riêng tư bằng [-P old_passphrase]và [-N new_passphrase][-f keyfile].

-t “Kiểu” Tùy chọn này chỉ định loại khóa sẽ được tạo. Các giá trị thường được sử dụng là: – rsa cho khóa RSA – dsa cho khóa DSA – ecdsa cho khóa DSA đường cong elliptic

-i “Đầu vào” Khi cần ssh-keygen để truy cập vào khóa hiện có, tùy chọn này sẽ chỉ định tệp.

-f “Tệp” Chỉ định tên của tệp để lưu trữ khóa đã tạo.

-N “Mới” Cung cấp mật khẩu mới cho khóa.

-P “Mật khẩu” Cung cấp mật khẩu (cũ) khi đọc khóa.

-c “Comment” Thay đổi chú thích cho một tệp khóa.

-p Thay đổi mật khẩu của tệp khóa riêng tư.

-q Tắt ssh-keygen.

-v Chế độ chi tiết.

-l “Dấu vân tay” In dấu vân tay của khóa công khai được chỉ định.

-B “Bubble babble” Hiển thị dấu vân tay “bubble babble” (định dạng Tectia) của một tệp khóa.

-F Tìm kiếm tên máy chủ được chỉ định trong tệp known_hosts.

-R Xóa tất cả các khóa thuộc về một tên máy chủ khỏi tệp known_hosts.

-y Đọc tệp định dạng OpenSSH riêng tư và in khóa công khai OpenSSH ra stdout.

  • Thêm config, hãy chỉnh sửa file ~/.ssh/config
sudo nano ~/.ssh/config
  • Bạn có thể sửa nội dung thành như sau để mỗi khi bạn ssh không cần phải chỉ định key nữa.
 Host name_server
   HostName IP_or_Domain
   User root
   IdentityFile ~/.ssh/id_ptts
   IdentitiesOnly=yes
  • Giải thích các từ khoá
    • Host: mục này bạn có thể điền alias để cho dễ nhớ mỗi khi bạn thực hiện ssh, tham số này sẽ thay thế cho server trong command ssh.
    • HostName: mục này là để chỉ định điểm cuối mà ssh sẽ kết nối đến, có thể là IP hoặc domain nếu domain đã được trỏ về Ip một cách chính xác.
    • IdentityFile: Là đường dẫn đến file private key ở bước 1.
    • IdentitiesOnly: để tránh system thử quá nhiều key cho 1 host.

Trên máy server

  • Bạn cần thêm public key mà bạn generate ở bước 1 vào file ~/.ssh/authorized_keys
echo "ssh-ed25519 AAAA......." >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
  • Kiểm tra file config
sudo nano /etc/ssh/sshd_config
  • Bạn cần đảm bảo các mục sau:
PubkeyAuthentication yes
PasswordAuthentication no
AuthorizedKeysFile .ssh/authorized_keys
  • Sau đó khởi động lại dịch vụ ssh
sudo systemctl restart sshd