Angenommen, ich habe eine SSH-Sitzung zu einer IP-Adresse geöffnet. Kann ich innerhalb der SSH-Sitzung feststellen, ob diese SSH-Sitzung auf einer VirtualBox-Gast-VM oder auf einer Nicht-VM-Maschine ausgeführt wird?
Anmerkungen:
- Betriebssystem-Host/Gast: CentOS 7
- Virtualbox: 6.0
Antwort1
Ja, Sie können dmidecode
dies erreichen, indem Sie Folgendes verwenden:
sudo yum install dmidecode
sudo dmidecode -s system-manufacturer
Beispielsweise wurde in meiner VMware Workstation CentOS VM Folgendes zurückgegeben:
VMware, Inc.
In Ihrer VirtualBox-VM würde Folgendes zurückgegeben werden:
innotek GmbH
Quelle:https://www.ostechnix.com/check-linux-system-physical-virtual-machine/
Antwort2
Das Folgende basiert auf einerAntwort, die ich in einem anderen Forum erhalten habe.
Eine schnelle Möglichkeit wäre, den Hersteller der Netzwerkkarte abzufragen. Die VM muss eine Netzwerkkarte haben, da wir uns über SSH verbinden.
Folgendes bekomme ich von einer VM mit 4 Netzwerkkarten:
$ ifconfig | grep ether
ether 08:00:27:ae:2c:b5 txqueuelen 1000 (Ethernet)
ether 08:00:27:1d:8b:9f txqueuelen 1000 (Ethernet)
ether 08:00:27:15:c6:f7 txqueuelen 1000 (Ethernet)
ether 08:00:27:64:bd:3b txqueuelen 1000 (Ethernet)
Dieser 08:00:27
Teil zeigt, dass der NIC-Hersteller VirtualBox ist (d. h. wir befinden uns in einer VM).
Andere Möglichkeiten könnten darin bestehen, Informationen zu unserer Hardware vom Betriebssystem abzurufen, zum Beispiel:
$ lshw | grep -i virtualbox
WARNING: you should run this program as super-user.
WARNING: output may be incomplete or inaccurate, you should run this program as super-user.
product: VirtualBox Graphics Adapter
product: VirtualBox Guest Service
Bei Guest Additions
Einbau dieser Geräte können wir weitere Nachweise erbringen:
$ VBoxControl -version
6.0.0r127566
Ich denke aber, dass man den ersten Trick (mit den MAC-Adressen) anwenden sollte.
Bearbeitung 1:
Führen Sie Folgendes aus, um die Umgebung abzurufen ssh
:
if [[ $(ifconfig | grep '08:00:27') ]] ; then echo "We're in Virtualbox VM" ; fi
lshw | grep -i virtualbox
VBoxControl -version
if [[ "innotek GmbH" == "$( sudo dmidecode -s system-manufacturer)" ]] ; then echo "We're in Virtualbox VM" ; fi
Antwort3
Wenn die VM nicht so konfiguriert ist, dass sie Sie anlügt, sind die in den anderen Antworten hier vorgestellten Techniken ausreichend.
Wenn die VM jedoch so konfiguriert ist, dass sie Sie anlügt (z. B. können MAC-Adressen beliebig sein), müssen Sie sich mehr anstrengen. Möglicherweise finden Sie Inkonsistenzen in /proc/* (z. B. eine andere Anzahl verfügbarer Kerne als für das CPU-Modell zu erwarten wäre).