Verwenden Sie SSH, um tcpdump mit "command" in authorized_keys in Wireshark zu leiten

981
aslmx

Wir möchten Echtzeit-Netzwerkverfolgung für Anwendungstests ermöglichen.

Wir möchten auf dem Remote-Host, auf dem tcpdump ausgeführt wird, möglichst wenig Berechtigungen / Rechte erteilen.

Also habe ich versucht, einen autorisierten Schlüssel einzurichten, der für die Anmeldung verwendet wird.

command="sudo tcpdump -n -i eth0 -s 65535 -w -" ssh-rsa AAAAB3NzaC.... 

Wenn ich eine Verbindung von der Client-Maschine her herstellen und verwenden kann

ssh -i private.key user@10.10.254.200 | wireshark -S -k -i - 

Wireshark beschwert sich und sagt "unbekanntes pcap-Format"

Wenn wir stattdessen rennen

 ssh -i private.key user@10.10.254.200 "tcpdump -i eth0 -w -" | wireshark -S -k -i - 

und entferne den Befehl = "..." von den berechtigten Schlüsseln, es funktioniert!

Was ist der Unterschied zwischen diesen beiden Varianten? wenn ich das "| wireshark ..." entferne, sehe ich in beiden Fällen binäre Daten auf mich zukommen ...

Falls es einen Unterschied gibt, der dies auf jeden Fall unmöglich machen wird, wissen Sie, wie der Befehl auf Serverseite irgendwie vordefiniert werden kann?

Wie ich am Anfang zu erklären versuchte, sollen die Client-Maschinen, auf denen wireshark läuft, so eingeschränkt wie möglich sein.

Danke für Ihre Hilfe!

0

1 Antwort auf die Frage

0
Jakuje

Im ersten Fall handelt es sich um eine normale SSH-Sitzung mit Pseudo-Terminal.

Wenn Sie nur die Daten wünschen (ohne Terminalsteuerzeichen und ähnliches), sollten Sie es sshmit -Tswitch versuchen .

Die andere Lösung, um dasselbe Verhalten zu erreichen, besteht darin, no-ptyneben dem Befehl in der authorized_keysDatei zu stehen (danke @mykel):

command="sudo tcpdump -n -i eth0 -s 65535 -w -",no-pty ssh-rsa AAAAB3NzaC.... 
@aslmx du bist willkommen. Das Markieren als Antwort würde helfen Jakuje vor 8 Jahren 0
Sie können dies auch erreichen, indem Sie die Option "no-pty" in die Datei "authorised_keys" einfügen. mykel vor 8 Jahren 1