Если я нахожусь в сеансе SSH с гостевой ОС VirtualBox, могу ли я узнать, нахожусь ли я внутри виртуальной машины?

Если я нахожусь в сеансе SSH с гостевой ОС VirtualBox, могу ли я узнать, нахожусь ли я внутри виртуальной машины?

Допустим, я открыл сеанс ssh на IP-адрес. Могу ли я узнать из сеанса ssh, запущен ли этот сеанс ssh на гостевой виртуальной машине VirtualBox или на машине без виртуальной машины?

Примечания:

  • Хост/гостевая ОС: CentOS 7
  • Виртуалбокс: 6.0

решение1

dmidecodeДа, для этого можно использовать :
sudo yum install dmidecode
sudo dmidecode -s system-manufacturer

Например, на моей виртуальной машине VMware Workstation CentOS он вернул следующее: VMware, Inc.

В вашей виртуальной машине VirtualBox это вернет: innotek GmbH

Источник:https://www.ostechnix.com/check-linux-system-physical-virtual-machine/

решение2

Нижеприведенное основано наответ я получил на другом форуме.


Один быстрый способ — запросить производителя сетевой карты. У виртуальной машины должна быть сетевая карта, поскольку мы подключаемся через SSH.
Вот что я получаю от виртуальной машины с 4 сетевыми картами:

$ 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)

Эта 08:00:27часть показывает, что производителем сетевой карты является VirtualBox (т.е. мы находимся в виртуальной машине).

Другими способами могут быть получение информации о нашем оборудовании из ОС, например:

$ 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

У нас могут быть дополнительные доказательства, если Guest Additionsбудут установлены:

$ VBoxControl -version
6.0.0r127566

Но я думаю, что первый трюк (с MAC-адресами) следует использовать.


Редактировать 1:
Запустите их, чтобы получить 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

решение3

Если виртуальная машина не настроена на то, чтобы лгать вам, то методы, представленные в других ответах здесь, вполне подойдут.

Но если виртуальная машина настроена лгать вам (например, MAC-адреса могут быть произвольными), то вам придется потрудиться усерднее. Возможно, вы сможете найти несоответствия в /proc/* (например, другое количество доступных ядер, чем ожидалось для модели ЦП).

Связанный контент