Điểm:9

Làm cách nào để biết máy chủ SSH đang chạy hiện tại là OpenSSH hay Dropbear?

lá cờ in

Nếu tôi vào bên trong tập tin /etc/ssh/ssh_config, tôi có thể thấy "$OpenBSD" ở đầu tệp. Tuy nhiên, nếu tôi thay đổi cổng mặc định thành một giá trị khác, nó dường như không hoạt động. Một đồng nghiệp đã thông báo với tôi rằng vì Dropbear là máy chủ phần mềm ở đây chứ không phải OpenSSH.

Có cách nào để chắc chắn không? Tôi không thể tìm thấy một câu trả lời googling đó.

eckes avatar
lá cờ cn
Bạn có thể sử dụng netstat hoặc ss với tùy chọn -p để xem PID và sau đó bạn có thể kiểm tra tiến trình đang chạy để biết đường dẫn và dòng lệnh.
Điểm:24
lá cờ cz

Kết nối với cổng ssh (ví dụ: 22) và kiểm tra biểu ngữ.

$nc 10.0.0.10 22
SSH-2.0-OpenSSH_8.6
Mark avatar
lá cờ tz
Để hoàn thiện, biểu ngữ của Dropbear bắt đầu bằng `SSH-2.0-dropbear`.
TooTea avatar
lá cờ in
Đối với những người không muốn chơi với kết nối thô, thông tin tương tự có thể được trích xuất bằng cách kết nối với `ssh -v localhost` và tìm kiếm `phiên bản phần mềm từ xa dropbear` hoặc `phiên bản phần mềm từ xa OpenSSH_something`.
Điểm:6
lá cờ rs

Hầu hết (nếu không phải tất cả?) Máy chủ SSH gửi một số loại chuỗi phiên bản ngay khi kết nối. Trong một dự án nghiên cứu nhỏ của tôi, tôi đã cố gắng ánh xạ phiên bản máy chủ SSH trên một không gian IPv4 rộng lớn và những gì tôi đã làm về cơ bản là cổng địa chỉ nc.

Tôi đã đưa nó vào một tập lệnh perl với thời gian chờ để xử lý dễ dàng hơn về phía tôi, cũng như thời gian chờ tùy chọn với giá trị mặc định:

#!/usr/bin/perl
sử dụng cảnh báo;
Sử dụng nghiêm ngặt;

trừ khi ($ARGV[0] && $ARGV[1]) { die "Cách sử dụng: ./raw hostname port [timeout]\n" }
$timeout của tôi = '10s';
nếu ($ARGV[2]) { $timeout = $ARGV[2] }

$response của tôi = `thời gian chờ $timeout nc $ARGV[0] $ARGV[1]`;
in phản hồi $;

Kiểm tra nó với một máy chủ trên mạng của tôi:

./sshbanner.pl 172.16.16.11 22
SSH-2.0-OpenSSH_5.3
Patrick Mevzek avatar
lá cờ cn
"Hầu hết (nếu không phải tất cả?) Máy chủ SSH gửi một số loại chuỗi phiên bản ngay khi kết nối." Bởi vì nó là bắt buộc theo tiêu chuẩn, hãy xem §4.2 của RFC 4253: "Khi kết nối đã được thiết lập, cả hai bên PHẢI gửi một chuỗi nhận dạng.". Một phần mềm không làm được điều này là không triển khai SSH đúng cách (và rất có thể sẽ không tương thích với các công cụ khác nói SSH)
lá cờ cn
@PatrickMevzek Bạn cần gửi một số chuỗi, nhưng tôi đoán một chuỗi ngẫu nhiên hoặc trống cũng sẽ hoạt động và không xác định được nhiều.
Patrick Mevzek avatar
lá cờ cn
@ PaÅloEbermann "Bạn cần gửi một số chuỗi" vâng, đó chính xác là những gì tiêu chuẩn nói và tôi đã trích dẫn RFC. Vì vậy, "nếu không phải tất cả?" trong câu trả lời là thừa/không cần thiết. Bất kỳ máy chủ SSH nào không gửi cái này (không có gì cả), KHÔNG triển khai giao thức SSH
Patrick Mevzek avatar
lá cờ cn
@SnakeDoc Chỉ vì Perl hoàn toàn không cần thiết ở đây, bạn có thể chạy lệnh bên trong `timeout ...` trực tiếp trong trình bao của mình, Perl không thêm bất cứ thứ gì vào đó (nhưng nếu nó làm hài lòng người dùng, thì đó không thực sự là vấn đề. .. `Cách sử dụng` mặc dù không khớp với ví dụ đã cho :-)) và tôi luôn khuyên KHÔNG nên sử dụng Perl (hoặc bất kỳ ngôn ngữ nào khác cho vấn đề đó), đặc biệt nếu bạn sử dụng để làm những việc mà ngôn ngữ đó có thể làm tự nhiên/thông qua các thư viện.Perl có `Net::Socket`, đây sẽ là cách thích hợp để thực hiện `nc` và cũng có mọi thứ cần thiết để triển khai thời gian chờ.
lá cờ pn
Để mở rộng nhận xét của @PatrickMevzek, RFC cho biết chuỗi id có dạng "SSH-protoversion-softwareversion SP comments CR LF" trong đó protoversion là "2.0" và chỉ các nhận xét là tùy chọn. - Bây giờ vì chúng là nguồn mở và về lý thuyết, ai đó có thể xây dựng OpenSSH với id DropBear, bạn không thể chắc chắn 100% về điều này, nhưng đó là cách để đặt cược!
lá cờ us
bash có mọi thứ bạn cần `đọc một
Điểm:3
lá cờ cn

Nếu bạn đang ở trên máy chủ, hãy xem quy trình được đính kèm với cổng mạng nơi ssh được mong đợi (22 hoặc một cái gì đó khác).

Bạn có thể dùng netstat hoặc ss cho rằng. Sau đó, bạn sẽ có thể tìm thấy dòng lệnh đầy đủ của máy chủ đang chạy, dòng lệnh này có thể đủ để xác định nó hoặc bạn có thể sử dụng các tùy chọn khác:

  • đang chạy dây trên đó thực sự là quá trình hành động cuối cùng nhưng có thể mang lại kết quả (chắc chắn bạn cũng sẽ tìm thấy lại chuỗi được máy chủ báo cáo từ xa, như các câu trả lời khác cho thấy)
  • bạn có thể tìm thấy các tệp đang mở mà quy trình có (tìm trong /proc/$PID/fd) có thể tạo ra liên kết đến tệp cấu hình hoặc tệp nhật ký và lý tưởng nhất là tệp nhật ký sẽ cung cấp đủ thông tin để xác định đây là quá trình gì.

Hoặc tùy thuộc vào hệ thống và thiết lập của bạn, ví dụ: bạn có thể sử dụng đơn vị danh sách systemctl để xem chính xác những gì hiện đang chạy và những gì ssh máy chủ (sau đó bằng cách kiểm tra hệ thống unit, bạn sẽ thấy đó là dòng lệnh nào và các thông tin khác)

Nếu bạn ở bên ngoài máy chủ, thì hãy xem các câu trả lời khác, nhưng không có gì đảm bảo rằng được trả về từ máy chủ từ xa là sự thật, nó có thể tự hiển thị như bất kỳ thứ gì nó muốn.

Một tùy chọn khác từ xa sẽ là thực hiện một số "dấu vân tay SSH".Tôi đã không nhìn thấy điều đó trực tiếp, nhưng tôi chắc chắn rằng nó tồn tại. Về cơ bản bằng cách kiểm tra các loại kết nối khác nhau, người ta có thể xác định một số thông tin từ phần từ xa, bên cạnh thông tin mà nó tuyên bố. Tôi đoán nhiều máy quét lỗ hổng có những thứ như vậy.

Điểm:1
lá cờ cn

Bạn có thể dùng ps để có được danh sách các quy trình và tiếng kêu đầu ra cho sshd.
Với điều này, bạn sẽ nhận được đường dẫn đến tệp nhị phân thực thi {{ vd /usr/sbin/sshd hay đại loại thế }}.
Sau đó, bạn có thể thực thi mã nhị phân này với -? để nhận thông tin trợ giúp và sử dụng. Đầu ra này sẽ chứa Tên dứt khoát của gói {{ ví dụ: OpenSSH hoặc Dropbear hoặc thứ gì đó tương tự }}.

Đă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.