VirtualBox 게스트에 대한 SSH 세션에 있는 경우 VM 내부에 있는지 알 수 있습니까?

VirtualBox 게스트에 대한 SSH 세션에 있는 경우 VM 내부에 있는지 알 수 있습니까?

IP 주소에 대한 SSH 세션을 열었다고 가정해 보겠습니다. SSH 세션 내에서 해당 SSH 세션이 VirtualBox 게스트 VM에서 실행되고 있는지 아니면 VM이 아닌 시스템에서 실행되고 있는지 알 수 있습니까?

노트:

  • OS 호스트/게스트: CentOS 7
  • 버추얼박스: 6.0

답변1

예, 다음을 사용하여 dmidecode이를 수행할 수 있습니다.
sudo yum install dmidecode
sudo dmidecode -s system-manufacturer

예를 들어 내 VMware Workstation CentOS VM에서는 다음을 반환했습니다. VMware, Inc.

VirtualBox VM에서는 다음을 반환합니다. innotek GmbH

원천:https://www.ostechnix.com/check-linux-system-physical-virtual-machine/

답변2

아래 내용은다른 포럼에서 받은 답변.


한 가지 빠른 방법은 NIC 제조업체에 문의하는 것입니다. SSH를 통해 연결하므로 VM에는 NIC가 있어야 합니다.
NIC가 4개 있는 VM에서 얻은 결과는 다음과 같습니다.

$ 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부분은 NIC 제조업체가 VirtualBox(즉, VM에 있음)임을 보여줍니다.

다른 방법으로는 OS에서 하드웨어 정보를 얻는 방법이 있습니다. 예를 들면 다음과 같습니다.

$ 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

VM이 귀하에게 거짓말을 하도록 구성되지 않은 경우 여기의 다른 답변에 제시된 기술은 괜찮습니다.

그러나 VM이 사용자를 속이도록 구성된 경우(예: MAC 주소는 임의적일 수 있음) 더 열심히 작업해야 합니다. /proc/*에서 불일치를 찾을 수 있습니다(예: CPU 모델에 대해 예상되는 것과 다른 사용 가능한 코어 수).

관련 정보