Tắt chức năng xác thực Host Key Identification khi kết nối SSH

Trong bài này, chúng ta sẽ học cách tắt tính năng kiểm tra Host Key Identification mỗi khi kết nối SSH đến một máy chủ Linux nào đó. Mặc định thì SSH Client luôn kiểm tra thông tin định của remote host thông qua Host Key mỗi khi client ssh đến. Nếu mà remote Host Key này chưa được thêm vào danh sách Host Key tương ứng máy chủ remote (~/.ssh/known_hosts), thì sẽ xuất hiện thông báo hỏi có chấp nhận Host Key này hay không với “yes” hoặc “no“.

Host Key về mặt bảo mật thì khá cần thiết, để đảm bảo máy chủ Remote nếu mà có bị thay đổi IP thành máy chủ khác thì ta cần kiểm tra tính xác thực của máy chủ đó. Nhưng trong một số trường hợp thì sẽ là vấn đề khá phiền toái như khi chúng ta có chương trình/script hoạt động tự động kết nối đến nhiều máy chủ remote thông qua giao thức SSH để thực hiện task nào đấy. Vì vậy mình sẽ hướng dẫn cách tắt chức năng xác thực Host Key đó đi .

Coi thêm bài  : Cải thiện tốc độ đăng nhập SSH trên Linux

The Authenticity Of Host Can’t Be Established

Bắt đầu lại nhé, khi mà chúng ta đăng nhập (login) ssh đến 1 remote host mà trước đó chúng ta chưa kết nối SSH bao giờ, thì thông tin Remote Host Key gần như là chưa biết và không có trong danh sách nhận biết kiểm tra Host Key (~/.ssh/known_hosts). Bạn sẽ gặp prompt như dưới yêu cầu xác nhận fingerprint của remote host.

# ssh user@lab.cuongquach.com
The authenticity of host ***** can't be established.
RSA key fingerprint is *****.
Are you sure you want to continue connecting (yes/no)?
  •  Nếu bạn chọn “yes” thì SSH Client sẽ tiếp tục hoạt động đăng nhập và lưu trữ host key xuống máy chủ nội bộ ~/.ssh/known_hosts .
  • Nếu bạn chọn “no” thì kết nối SSH sẽ bị ngắt hoạt động.

Vậy nếu bạn muốn bỏ qua chức năng kiểm tra Host Key fingerprint này thì bạn có thể thêm option “StrictHostKeyChecking” với giá trị “no” trên chương trình lệnh.

# ssh -o "StrictHostKeyChecking=no" user@lab.cuongquach.com

 
Khi bạn thực hiện option với câu lệnh trên, việc kiểm tra xác thực Remote Host Key sẽ bị bỏ qua và tự lưu thông tin host key xuống file ~/.ssh/known_hosts.

Thông tin Remote Host Identification đã bị thay đổi

Tuy nhiên sẽ có trường hợp như sau, dù đã có option “StrictHostKeyChecking=no“, bạn vẫn bị lỗi từ chối kết nối dịch vụ SSH đến remote host với thông báo như sau.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
*****
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending key in /home/user/.ssh/known_hosts:1
RSA host key for ***** has changed and you have requested strict checking.
Host key verification failed.

 
Thông báo đã ghi rõ, máy chủ mà bạn đang kết nối đến có thể không chính xác là nó, trường hợp này thường xảy ra khi bạn cài lại OS hoặc gán IP cũ cho máy chủ khác. Nếu bạn chắc chắn máy chủ Linux bạn đang kết nối đến là an toàn và không nguy hại, thì bạn có thể bỏ qua bước này bằng cách ta bỏ qua cả việc add Remote Host Key vào file ~/.ssh/known_hosts bằng cách đẩy nó vào filesystem đặc biệt rỗng /dev/null.

# ssh -o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" user@lab.cuongquach.com

 
Bạn cũng có thể set các giá trị option lệnh này mang tính vĩnh viễn mỗi khi kết nối SSH đến 1 đối tượng remote host cụ thể nào đó. Bằng cách thêm thông tin vào file cấu hình SSH Client ~/.ssh/config (đối với user đang sử dụng) hoặc /etc/ssh/ssh_config (áp config cho toàn bộ user).

Coi thêm bài : Cấu hình ~/.ssh/config để đơn giản hoá việc kết nối SSH Client

+ Tắt chức năng xác thực SSH Remote Host Key với toàn bộ host

# vi ~/.ssh/config

Host *
	StrictHostKeyChecking no
	UserKnownHostsFile=/dev/null

+ Tắt xác thực SSH Remote Host Key với các IP lớp mạng 192.168.0.0/24

Host 192.168.0.*
	StrictHostKeyChecking no
	UserKnownHostsFile=/dev/null

 
Như vậy bạn đã biết cách bỏ qua hoạt động xác thực Remote Host Key trong trường hợp bạn thấy không cần thiết ở hoạt động này với một số máy chủ remote host cụ thể.

Previous articleLộ trình nghiên cứu học DevOps và Front-end/Backend Web Developer 2017
Next articleSự kiện “Vietnam Mobile Day 2017 – HCM” (HCM-20/05/2017)
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !