Wenn ich mich in einer SSH-Sitzung mit einem VirtualBox-Gast befinde, kann ich dann wissen, ob ich mich in einer VM befinde?

Wenn ich mich in einer SSH-Sitzung mit einem VirtualBox-Gast befinde, kann ich dann wissen, ob ich mich in einer VM befinde?

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 dmidecodedies 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:27Teil 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 AdditionsEinbau 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).

verwandte Informationen