Điểm:0

Cách viết kịch bản kiểm tra xem khóa trong tệp known_hosts có đúng không

lá cờ tr

Tôi muốn triển khai một chức năng trong tập lệnh để kiểm tra xem khóa tương ứng với máy chủ đã cho trong tệp known_hosts có đúng không. Cách rõ ràng để thực hiện việc này là thử kết nối ssh và phân tích cú pháp nếu nó dẫn đến cảnh báo known_hosts. Điều này là không tối ưu vì những lý do sau:

  • Nếu chủ nhà là không phải trong tệp know_hosts, nó cần được kiểm tra riêng
  • Nó dựa trên một từ ngữ cụ thể của cảnh báo có thể thay đổi
  • Nó chạy lệnh ssh cho bạn trên máy chủ đích mà bạn không cần chạy và lệnh này có thể không thành công vì các lý do khác nhau, chẳng hạn như shell đăng nhập nào được chỉ định
  • Yêu cầu thông tin đăng nhập hợp lệ

Tôi đã cố gắng tìm một tùy chọn trong ssh-keyscanssh-keygen các lệnh có thể kiểm tra nhưng không tìm thấy chúng.

Cách đơn giản nhất để thực hiện việc kiểm tra này là gì?

Điểm:1
lá cờ vn
#!/usr/bin/env bash

MÁY CHỦ=$1

đặt -o đường ống thất bại

HOST_KEY_LINE=$(ssh-keygen -F "$HOST" | đuôi -n1)

nếu [ $? -ne 0 ]; sau đó
  echo "$HOST không có trong tệp known_hosts"
  thoát 1
fi

KEY_TYPE=$(echo "$HOST_KEY_LINE" | awk '{ print $2 }')
HOST_KEY=$(echo "$HOST_KEY_LINE" | awk '{ print $3 }')

ACTUAL_KEY=$(ssh-keyscan -t "$KEY_TYPE" "$HOST" 2>&1 | tail -n1 | awk '{ print $3 }')

nếu [ $? -ne 0 ]; sau đó
  echo "Không thể lấy khóa từ $HOST: $ACTUAL_KEY"
  thoát 1
fi

nếu [ "$HOST_KEY" = "$ACTUAL_KEY" ]; sau đó
  tiếng vang "known_hosts có khóa chính xác"
  thoát 0
fi

tiếng vang "known_hosts có khóa không chính xác"
Điểm:0
lá cờ us

Nếu bạn có danh sách tất cả các máy chủ có sẵn, bạn có thể sử dụng thông tin bên dưới:

ssh-keyscan -t rsa,dsa -f hosts_list > ~/.ssh/known_hosts_revised

Điều này sẽ tạo ra một mới known_hosts_revised mà bạn có thể sử dụng để tạo sự khác biệt với hiện tại know_hosts để thấy sự khác biệt.

Các hosts_list nội dung nên như sau:

1.2.3.4,1.2.4.4 tên.tên miền của tôi,tên,n.tên miền của tôi,n,1.2.3.4,1.2.4.4

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.