SSH LINUX Bằng Public và Private Key

bởi | CentOS 7, LPI

Home » LPI » SSH LINUX Bằng Public và Private Key

SSH Key là gì

Secure Shell (hay còn gọi là SSH) là một giao thức mật mã cho phép người dùng thực hiện dịch vụ qua các mạng không được bảo mật. SSH Key sẽ mang đến nhiều sự bảo mật về đăng nhập hơn là chỉ dùng mật khẩu thông thường. Trong khi mật khẩu thông thường có thể bị bẻ khóa thì SSH Key gần như là không thể giải mã.
Việc tạo một cặp Key sẽ cung cấp hai chuỗi ký tự: Một public key và một private key. Public key có thể được đặt ở bất kỳ server nào. Sau đó mở khóa bằng cách kết nối với máy client đã có private key. Khi cả hai đã khớp nhau, hệ thống sẽ mở khóa mà không cần mật khẩu. Ta còn có thể bảo vệ private key bằng một passphrase để tăng cường sự bảo mật.

Lab SSH LINUX Bằng Public/Private Key

– Mục tiêu bài lab
+ Ta đã có 1 máy thật Linux CentOS 7 đang đặt tại Data Center
+ Máy này đã gán IP tĩnh
+ Ta mong muốn điều khiển máy thông qua giao diện dòng lệnh. Sử dụng SSHv2, các thực bằng: username + password. Nâng cấp xác thực bằng public/private key

– Cặp public/private key
+ Public Key: ở trên máy chủ ta muốn điều khiển
+ Private Key: Chỉ admin mới biết và cất giữ

– Sử dụng public/private key
+ Bảo mật đăng nhập
+ Ứng dụng tạo công việc truyền tải dữ liệu giữa 2 máy một cách tự động.

– Sơ đồ bài thực hành, có 2 máy
+ Win 10: 192.168.126.206
+ CentOS 7: 192.168.126.201

– Công cụ
+ SSH client: Putty
+ Chương trình tạo key: PuttyGen

– Mở PuttyGen để tạo cặp public/private key

+ Copy và save public key
+ Copy và save private key (ta có thể đặt passphrase để mã hóa private key nếu để tạo việc ssh tự động thì không cần đặt pass)

– Các thao tác thực hiện trên máy Linux
+ Tạo 1 folder ẩn
mkdir .ssh
+ tạo file chứa public key. vi vào file .ssh/authorized_keys và dán publickey vào đây
vi ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
+ Kiểm tra selinux ở trạng thái disabled
cat /etc/sysconfig/selinux
SELINUX=disabled
+ restart dịch vụ ssh
systemctl restart sshd
#Kiểm tra lại: netstat -ltunp | grep 22

– Các thao tác thực hiện trên máy client windows
+ Nạp private key tương ứng với public key vào putty của máy windows

NOTE

– muốn thêm nhiều cặp public/private key chỉ việc ghi thêm vào file .ssh/authorized_keys

– Tại sao lại là .ssh/authorized_keys? Ta có thể kiểm tra trong file /ect/ssh/sshd_config sẽ thấy dòng .ssh/authorized_keys. Chứng tỏ tên file chứa public key là .ssh/authorized_keys. Ta có thể sửa lại nếu muốn

– Vô hiệu hóa mật khẩu cho root login
+ Khi đã sao chép các SSH Key của mình và đảm bảo rằng chỉ có thể đăng nhập bằng SSH Key. Hãy hạn chế root login thành chỉ có thể đăng nhập thông qua SSH Key. Để thực hiện việc này, mở file SSH config:
vi /etc/ssh/sshd_config
+ Trong file đó, hãy tìm dòng PermitRootLogin và sửa đổi nó như bên dưới để đảm bảo rằng ssh chỉ có thể sử dụng SSH Key:
PermitRootLogin without-password

– Phải đảm bảo rằng SELINUX trên máy cần ssh tắt. Nếu chưa tắt thì bạn thêm câu lệnh này để SELINUX cho phép bạn SSH vào.
semanage port -a -t ssh_port_t -p tcp 22

Tạo cặp public/private key trên linux

– Sử dụng lệnh sau để tạo cặp public/private
ssh-keygen -t rsa

– Lưu trữ key và passphrase
+ Khi nhập lệnh Gen Key, bạn sẽ nhận được một số câu hỏi:
Enter file in which to save the key (/root/.ssh/id_rsa):
Nhấn Enter, lưu file vào user home (trong bài viết này sẽ sử dụng tên của user là root để làm mẫu).
Enter passphrase (empty for no passphrase):
Public key hiện nằm trong /home/root/.ssh/id_rsa.pub. Private key (identification) hiện nằm trong /home/root/.ssh/id_rsa. folder .ssh là folder ẩn