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 모델에 대해 예상되는 것과 다른 사용 가능한 코어 수).