Những điều bạn nên biết về tệp known_hosts trong Linux

  • Friday 15/11/2024

Có một file known_hosts trong thư mục .ssh và nó là một phần không thể thiếu của cơ chế SSH trên server Linux. Bài viết này sẽ giúp bạn hiểu hơn về nó.

 

Nếu bạn nhìn vào thư mục .ssh trong thư mục chính của mình, bạn sẽ thấy tệp known_hosts giữa các tệp khác.

known_hosts

Ở đây, id_rsa là khóa SSH riêng tư của bạn, id_rsa.pub là khóa SSH công khai. Tệp cấu hình trong SSH được sử dụng để tạo hồ sơ để dễ dàng kết nối với nhiều máy chủ khác nhau. Nó không phải là một tập tin phổ biến và tôi đã tạo nó một cách cụ thể.

Trọng tâm của bài viết này là tập tin cuối cùng, known_hosts. Tệp ~/.ssh/known_hosts này là một phần quan trọng của tệp cấu hình SSH máy khách.

Tệp known_hosts trong SSH là gì?

Tệp known_hosts lưu trữ khóa chung của máy chủ được người dùng truy cập. Đây là một tệp rất quan trọng đảm bảo rằng người dùng đang kết nối với máy chủ hợp pháp bằng cách lưu danh tính của nó vào hệ thống cục bộ của bạn. Nó cũng giúp tránh các cuộc tấn công trung gian.

Khi bạn kết nối đến một server mới qua SSH, bạn sẽ được nhắc xem bạn có muốn thêm thông tin server vào tệp known_hosts hay không.

#ssh root@103.1.x.x
The authenticity of host ‘103.1.x.x (103.1.x.x)’ can’t be established.
ED25519 key fingerprint is SHA256:lGYJZWGiSN/0u0dQYA5CuS2tkLMzz60wX851L/h06XM.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Nếu bạn đồng ý, thông tin của server sẽ được lưu vào hệ thống của bạn.

Phòng tránh Man in the Middle (MitM)

Hãy tưởng tượng rằng bạn kết nối với server thường xuyên và đã thêm nó vào tệp known_hosts.

 

Nếu có sự thay đổi về public key của server, hệ thống của bạn sẽ ghi nhận sự thay đổi này nhờ thông tin được lưu trong file known_hosts. Bạn sẽ được thông báo ngay lập tức về thay đổi này:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: POSSIBLE DNS SPOOFING DETECTED!
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The RSA host key for xyz remote host has changed,and the key for the corresponding IP address xxx.yy.xxx.yy is unknown. This could either mean that DNS SPOOFING is happening or the IP address for the host and its host key have changed at the same time.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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 69:4e:bb:70:6a:64:e3:78:07:6f:b4:00:41:07:d8:9c. Please contact your system administrator. Add correct host key in /home/.ssh/known_hosts to get rid of this message. Offending key in /home/.ssh/known_hosts:1 Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.

Trong trường hợp như vậy, bạn có thể liên hệ với quản trị viên của server trước khi chấp nhận khóa mới này. Bằng cách này, bạn có thể đảm bảo rằng máy chủ hoặc server không bị xâm phạm.

Đôi khi, khóa của máy chủ hoặc server bị quản trị viên cố ý thay đổi hoặc do cài đặt lại máy chủ.

Dù lý do dẫn đến thay đổi này là gì thì trước tiên bạn cần xóa khóa cũ khỏi tệp known_hosts để kết nối lại với server. Lần tới khi bạn kết nối với server này, máy client sẽ tạo khóa mới cho server.

Quản lý nhiều người dùng được xác thực

Như đã đề cập trước đó, khi một client kết nối thành công với server, tệp known_hosts của nó sẽ được thêm khóa chung của server.

Đôi khi bạn muốn một server được xác thực cho nhiều client mà không bị nhắc xác minh mã khóa. Ví dụ: bạn đang chạy một số loại công cụ quản lý cấu hình như Ansible và bạn không muốn máy chủ khách yêu cầu xác minh mã khóa.

Vì vậy, nếu có nhiều client, bạn có thể bỏ qua lời nhắc tương tác SSH bằng ba cách:

  • Thêm thủ công khóa chung của máy chủ vào tệp known_hosts của mỗi client.
  • Sử dụng tùy chọn dòng lệnh -o StrictHostKeyChecking=no với mỗi máy client trong khi truy cập server qua SSH (không được khuyến nghị)
    #ssh -o StrictHostKeyChecking=no <user>@<server_address>
  • Đăng ký tất cả các server của bạn trong tệp ssh_known_hosts chính, sau đó phân phát tệp này cho tất cả các máy client. Ngoài ra, để thực hiện công việc này, có thể sử dụng lệnh ssh-keyscan:
    #ssh-keyscan -H -t rsa ‘your-server-ip’ >> /etc/ssh/ssh_known_hosts

Nhận thông tin chi tiết của server từ tệp known_hosts

Hầu như tất cả các hệ thống Linux đều bật HashKnownhosts trong tệp cấu hình SSH. Đó là một tính năng bảo mật.

 

Điều này có nghĩa là các thông tin trong tệp known_hosts đã được băm. Bạn có thể thấy các số ngẫu nhiên trong file known_hosts với lệnh:

#cat .ssh/known_hosts
|1|yWIW17YIg0wBRXJ8Ktt4mcfBqsk=|cFHOrZ8VEx0vdOjau2XQr/K7B/c= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFR293PJnDCj59XxfqYGctrMo60ZU5IOjACZZNRp9D6f |1|Ta7hoH/az4O3l2dwfaKh8O2jitI=|WGU5TKhMA+2og1qMKE6kmynFNYo= ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCmrxLW436AyBGyGCggl/j2qBCr782AVIvbiTEsWNBWLcWMKYAQpTdAXnaV4bBRqnk2NJg/60XDHKC2DF1tzx6ABWN/R6vcUAbulI9H1RUWpJ1AiDmFL84MvW2UukbpN5a6Lr+DvjclVqPxJRjQKr6Vy2K9oJgGKnHVcWSIHeAlW49kCCg5fIxF8stBTqJg0cRk6uxmcYVud1vh9a7SaZGK+jFZTB75RiHAVFuitHWpljecMxJRNYy/EhmmXrrvyU8pObVXlWlDd61uwExi4uEwNSY+Do7vR1y8svnt9mjTzzyM6MhT4sOcxWmNgdmw7bU/wPpie3dSjZMQeu2mQCSM7SG28dwjSyFPpanRsZKzkh0okAaCSItoNwl6zOf6dE3zt0s5EI6BPolhFAbT3NqmXRblxb7eV8rGEPf14iguHUkg6ZQr2OUdfeN1FYNMJ8Gb9RD159Mwjl4/jPIBdnXvt7zYct3XhPKm7Wxv4K/RWZE837C7mGQh2KEahWajdq8= |1|NonAy25kVXL24U2mx6ZNxAY5m98=|ypf0IMpf3qq3vhrvUMprssOhODs= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBE3br/9jaZfdB+qBxiVEZBJMb4XQONwzV4tH1xeFZX/zkyws2eBHrVO9O5l9b6M6+gO6nBtCwAzzaeLOn6mo8GQ=

 

Để kiểm tra xem một máy chủ SSH đã được lưu trong tệp known_hosts hay chưa và hiển thị thông tin về khóa host của server đó nếu tồn tại, bạn thực hiện lệnh:

# ssh-keygen -l -F <server-IP-or-hostname>

Xóa thông tin server khỏi known_hosts

Nếu muốn xóa thông tin của một server cụ thể khỏi tệp known_hosts, bạn cần biết tên hostname hoặc địa chỉ IP của server và chạy lệnh:

#ssh-keygen -R <server-hostname-or-IP>

Điều này tốt hơn nhiều so với việc xác định các mục liên quan đến server và sau đó xóa chúng theo cách thủ công bằng lệnh rm.

Chúc các bạn thành công !

_______________________________________________________________________________________________________

P.A Việt Nam cung cấp đa dạng các cấu hình Máy Chủ Ảo và Máy Chủ Riêng
Cloud Server
Cloud Server Pro
Máy Chủ Riêng

Tham khảo các ưu đãi: https://www.pavietnam.vn/vn/tin-khuyen-mai/

Rate this post