ssh 19
Cách tạo ra cặp Public và Private key của SSH, thông số kỹ thuật sử dụng Public SSH key ở server, và Private SSH Key ở Client để chúng xác nhận khi liên kết
Phần này nói về xác nhận bằng SSH Key, cách sử dụng chúng để nhanh gọn tạo liên kết bảo đảm an toàn, tiện lợi .

Cơ chế xác thực bằng SSH Key

Ngoài cơ chế xác thức bằng cách nhập mật khẩu như trên còn có cơ chế sử dụng SSH Key để xác thực.
Để tạo nên xác thực này cần có hai file, một file lưu Private Key
và môt lưu Public key

  • Public Key khóa chung, là một file text – nó lại lưu ở phía Server SSH,
    nó dùng để khi Client gửi Private Key (file lưu ở Client) lên để xác thực thì kiểm tra phù hợp giữa
    Private Key và Public Key này. Nếu phù hợp thì cho kết nối.
  • Private Key khóa riêng, là một file text bên trong nó chứa mã riêng
    để xác thực (xác thực là kiểm tra sự phù hợp của Private Key và Public Key).
    Máy khách kết nối với máy chủ phải chỉ ra file này khi kết nối SSH thay vì nhập mật khẩu.

    Hãy lưu file Private key cận thận, bất kỳ ai có file này
    có thể thực hiện kết nối đến máy chủ của bạn

Tạo SSH Key (Public/Private)

Có nhiều cách để có được SSH Key (cặp Private KeyPublic Key).
Miễn là sau khi có căp file này thì file Public Key lưu ở vị trí phù hợp tại Server (xem trên),
còn Private key dùng ở máy khách để kết nối.
Dưới đây là một cách có được cặp file này (dùng lệnh ssh-keygen của OpenSSH chạy
ở Server hoặc Client đều được):

Mở terminate (trên Linux, macOS hoặc cmd trên Windows) rồi gõ dòng lệnh:

ssh-keygen -t rsa

Đầu tiên nó hỏi nhập thư mục sẽ lưu key sinh ra, hãy nhập thư mục – tên file muốn lưu hoặc
nhấn Enter để sử dụng đường dẫn nó gợi ý
(~/.ssh/id_rsa, ví dụ trên máy tôi /Users/xuanthulab/.ssh/id_rsa).
Sau đó nó yêu cầu nhập passphase, nhấn Enter để rỗng.
Cuối cùng nó sinh ra hai file key có tên id_rsaid_rsa.pub
ở thư mục đã nhập trên.

ssh 17
Kết quả lệnh trên bạn đã có :

  • Private Key chứa trong file
    ~/.ssh/id_rsa, hãy lưu lại cẩn thận,
    nó được dùng để SSH client (máy local) kết nối đến Server.
    Mở file này ra, đoạn mã Private Key có dạng
    ssh 19
    Bạn hoàn toàn có thể lưu nội dung đoạn mã này để sau này sử dụng .
  • Public Key chứa trong file
    ~/.ssh/id_rsa.pub, hãy copy nội dung bên trong file – giữ cận thận,
    Nó được lưu (dùng) ở máy Server để xác thực khi có Private key gửi đến.
    Nếu mở file này ra, thì nội dung mã Public key nhìn thấy có dạng:
    ssh 18
    Bạn hoàn toàn có thể lưu mã này lại để sau này sử dụng

Lưu ý trên Server Windows (hoặc Windows Destop)

Cách phát sinh SSH Key giống hệt trên Linux,
các file kết quả lưu tại %homepath%\.ssh\.
Với %homepath% là thư mục gốc của User,
ví dụ như bạn đang đăng nhập với User là
Administrator thì %homepath%
C:\Users\Administrator\

Xác thực bằng SSH Key

Khi SSH Server bật chính sách được cho phép xác sự bằng SSH Key, thì tại Server thông số kỹ thuật để nó nhận biết có Public Key lưu ở file nào đó trên Server. Sau đó, ở máy Client ( local ) khi liên kết sẽ gửi Private Key lên, nếu nó kiểm tra thấy tương thích giữa Public Key và Private Key thì cho liên kết .

Cấu hình Public key cho SSH Server

Mở file config của SSH Service ra
(/etc/ssh/sshd_config trên
Windows C:\ProgramData\sshd_config – xem phần

Câu hình dịch vụ SSH Server
), hãy đảm bảo nó có dòng cấu hình:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

Trong đó .ssh/authorized_keys cho biết, tìm Public key tại file .ssh/authorized_keys
của User. Có nghĩa là Public key sẽ phải có cho từng User kết nối, và nó lưu dưới thư mục của User.

Ví dụ, nếu user đăng nhập có tên là abc thì Public key phải lưu ở
/home/abc/.ssh/authorized_keys (Linux) hay tại C:\Users\abc\.ssh\authorized_keys
đối với Windows. Biết được đường dẫn như vậy, bạn cần copy file id_rsa.pub
(chứa Public key) sinh ra ở trên vào đúng đường dẫn này
(đổi tên id_rsa.pub thành authorized_keys).
Hoặc tạo file authorized_keys rồi paste nội dung Public key vào.

Ví dụ, Linux Server có IP 192.168.1.52, user để là xuanthulab,
thì file lưu Public Key phải để tại là ở /home/xuanthulab/.ssh/authorized_keys

Lưu ý – Lỗi hay gặp không kết nối được SSH KEY: thường là lưu file public key ở Server ở các
thư mục không được chmod phù hợp. Nếu user có tên là abc, thì chmod phù hợp là:

/home/abc                               700
/home/abc/.ssh                          700
/home/abc/.ssh/authorized_keys          600

Cấu hình Private key cho SSH Client

Sau khi có SSH Server cho phép xác thực bằng SSH Key, thì ở Client phải sử dụng Private key,
có được khi sinh ra cùng Public key ở trên.

Như phần
File cấu hình config cho SSH Client
, mở (tạo mới nếu chưa có) file config ra và thiết lập có xác thực SSH Key đến host tương ứng

Ví dụ, kết nối đến 192.168.1.52 thì dùng Private key lưu tại
/Users/xuanthulab/.ssh/id_rsa, thì file config đó như sau:

Host 192.168.1.52
    PreferredAuthentications publickey
    IdentityFile "/Users/xuanthulab/.ssh/id_rsa"

Do public key ở 192.168.1.52 phù hợp với private key ở client (/Users/xuanthulab/.ssh/id_rsa),
nên khi kết nối nó sẽ xác thực ngay bằng key mà không cần nhập password nữa

ssh [email protected]

ssh 20
Cũng chú ý quan tâm là Private key được chmod tương thích ( 600 )

Leave a Reply

Email của bạn sẽ không được hiển thị công khai.