IPアドレスへのsshセッションを開いたとします。 sshセッション内から、そのsshセッションがVirtualBoxゲストVMで実行されているのか、VM以外のマシンで実行されているのかを確認できますか?
ノート:
はい、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/
以下は 別のフォーラムで受け取った回答 に基づいています。
簡単な方法の1つは、NICメーカーにクエリを実行することです。SSH経由で接続しているため、VMにはNICが必要です。
これが、4つのNICを持つ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
VMがあなたに嘘をつくように構成されていない場合は、ここで他の回答に示されている手法で問題ありません。
しかし、VMがあなたに嘘をつくように構成されている場合(たとえば、MACアドレスは任意である可能性があります)、もっと努力する必要があります./ proc/*で不整合を見つけることができるかもしれません(たとえば、異なるCPUモデルで予想されるよりも利用可能なコアの数)。