ホストを介して外部でVirtualBoxゲストにSSHで接続する方法は?[閉まっている]


644

Windows 7マシンでUbuntu VMを実行しています。SSHを介して外部からWebサーバーにアクセスできるようにするにはどうすればよいですか?

ホストからゲストにsshできる手順(VirtualBoxホストとゲストVM間のSSHアクセスのセットアップ)を見つけましたが、それでもルーター経由でそれにアクセスする問題が残ります。

私は自分のWindowsマシンにSSHサーバーをインストールして数回トンネルを作成できると思います(ローカル、動的などの観点から何を使用するか、または複数のトンネルを設定する方法は100%わかりませんが?)、しかし、VMをルーターに直接アクセスできるようにして、直接ポートフォワードできるようにする方法はありますか?


3
これを行うには、Vagrant(構成ファイルまたはGUIからすぐに使えるV​​M(sshアクセス可能、ipアクセス可能)を作成する)を使用するはるかに簡単な方法があります。私はあなたのユースケースを知りませんが、LAMPベースの開発マシンをセットアップしたい場合に役立つ、Vagrantを使用してsshでアクセス可能なUbuntuサーバーVMを作成する方法に関する大規模なチュートリアルを書きました。
Sliq

1
Vagrantは優れたツールですが、virtualboxの最新バージョンと互換性がありません
LizH

2
ベストアンサーはさらに下にあります:stackoverflow.com/a/10410527/2214806
Michael

このチュートリアルを確認できます。wiki.workassis.com/ virtualbox
M

新しい、。仕を持っている便利な、仮想化についての話をする場所であることができると思いれるarea51.meta.stackexchange.com/questions/28201/...
realtebo

回答:


1308

ゲストLinux VirtualBox VMにログインする最良の方法は、ポート転送です。デフォルトでは、NATを使用している1つのインターフェースがすでにあるはずです。次に、ネットワーク設定に移動し、[ ポート転送 ]ボタンをクリックします。新しいルールを追加します。ルール名として「ssh」を挿入します。「ホストポート」として3022を挿入します。「ゲストポート」として22を挿入します。ルールの他のすべては空白のままにできます。

またはコマンドラインから

VBoxManage modifyvm myserver --natpf1 "ssh,tcp,,3022,,22"

ここで、「myserver」は作成されたVMの名前です。追加されたルールを確認します。

VBoxManage showvminfo myserver | grep 'Rule'

それで全部です!VMにSSHサーバーをインストールすることを忘れないでください。

sudo apt-get install openssh-server

ゲストVMにSSH接続するには、次のように記述します。

ssh -p 3022 user@127.0.0.1

userVM内のユーザー名はどこにありますか。


24
@Keyslinger、これはあなたが探していたものですか? ssh -p 3022 user@127.0.0.1 それは私が行方不明で、ただ別のサイトで見つけるために行った1つのステップでした。
D.ウッズ

10
また、ポートリダイレクトを2020から80に追加したので、192.0.0.1: 2020を使用してブラウザーからApacheに簡単にアクセスできます。VBoxManage modifyvm myserver --natpf1 "ssh、tcp ,, 2020、、80"
Eduardo Russo

4
thebigdog、直接ヘッドレスにすることができます:VBoxHeadless -s 'vmname'
vkostromin

4
デフォルトの22ではなく、ポート3022を使用しているのはなぜですか?
セラフィム

3
Host mybox HostName 127.0.0.1 User myuser Port 3022ssh mybox
作業を

129

VirtualBoxのアダプタタイプをブリッジに変更し、DHCPを使用するようにゲストを設定するか、DHCPの境界外に静的IPアドレスを設定します。これにより、仮想マシンはホームネットワーク上の通常のゲストのように動作します。その後、ポートフォワードできます。


2
2アダプター構成が機能する方法 1つはNATに、もう1つはホストのみにありますか?
CantGetANick 2012年

16
私の意見では、ローカルネットワークでVMを公開することは最良のオプションではありません(たとえば、オフィスネットワークでは)、@ vkostrominによって提案されたソリューションは、ホスト内のVMのカプセル化を維持します。
Victor P.

1
@VictorP。なぜそれがオフィスネットワークで最良の選択肢ではないのか説明していただけませんか?セキュリティが原因ですか?
mdo123 2017

1
それが最良の選択肢ではないことを知っていても、私の現在の構成では、アダプターをブリッジに設定することが機能する唯一のソリューションです。
James

69

NATアダプターを維持し、2つ目のホストオンリーアダプターを追加することは素晴らしい働きをし、ラップトップ(外部ネットワークが常に変化する)にとって非常に重要です。

http://muffinresearch.co.uk/archives/2010/02/08/howto-ssh-into-virtualbox-3-linux-guests/

virtualbox自体にホストオンリーネットワークを作成することを忘れないでください(GUI->設定->ネットワーク)。そうしないと、ゲストにホストオンリーインターフェイスを作成できません。


2
この答えだけが私にとってうまくいき、他には何もしませんでした。また、追加のアダプターを追加しただけで機能しました。編集する必要はありませんでした/etc/network/interfaces。ありがとうございます。
骨折した足

3
これが最良の答えであることに同意した。そうでなければ、あなたのフープているジャンプあなたが共通のサービス(アクセスするたびにsshsftpあなたは非標準のポートを通過する必要があると思いますので、など)。
Kirk Woll、2016年

1
私は、インターネットアーカイブへのリンクを好む:web.archive.org/web/20160523035053/https://muffinresearch.co.uk/... - web.archive.org/web/20170701174835/http://christophermaier.name/...があります別の良い説明。
Ben Creasy 2017

1
このアップ設定の別の良い情報源2buntu.com/articles/1513/...を
mdo123

1
@Sparklerはsshdを実行していますか?ポートを閉じるファイアウォールはありますか?
orip

24

また、ネットワーク設定でブリッジネットワーク(または新しいバージョンでは「ブリッジアダプタ」)を使用することもできます。これにより、VMがマシンと同じVLANに配置されます。したがって、このようにVMにSSHで接続することができます。

ssh user @ IP_OF_VM


このソリューションでは、SSH接続はLANを経由しますか?
user2233706

23

Solaris 10およびUbuntu 16.04でホストのみのネットワーク(ブリッジより優れている)を実行する方法

ホストオンリーインターフェースの追加

  1. Virtualbox>ファイル>設定>ネットワーク>ホストオンリーネットワーク>追加
  2. VMをシャットダウンします。
  3. VMの設定>ネットワーク。最初のアダプターはナット、2番目はホストのみでなければなりません。
  4. cmd.exeを起動して実行しipconfig /allます。次の行が表示されます。

    Ethernet adapter VirtualBox Host-Only Network:
       ...
       IPv4 Address. . . . . . . . . . . : 192.168.59.1
    

    ゲストの2番目のアダプターも192.168.59。*にある必要があります。

  5. VMを起動します。

Solaris 10

  1. 設定を 確認してくださいifconfig -a。e1000g0とe1000g1が表示されます。e1000g1に興味があります。
  2. ifconfig e1000g down
  3. ifconfig e1000g 192.168.56.10 netmask 255.255.255.0 up
  4. このインターフェースに到達可能かどうかをホストから確認します。 ping 192.168.56.10

再起動時にこれらの設定を保持する

# vi /etc/hostname.e1000g1
192.168.56.10 netmask 255.255.255.0
# reboot

rootとしてログインするようにsshサービス(管理)を構成します(推奨されません)

sshが有効になっているかどうかを確認する

# svcs -a | grep ssh
online         15:29:57 svc:/network/ssh:default

/ etc / ssh / sshd_configを変更して、

PermitRootLogin yes

sshサービスを再起動します

svcadm restart ssh

ホストからチェック

ssh root@192.168.56.10

Ubuntu 16.04

インターフェースのリスト:

ip addr

lo、enp0s3、enp0s8のような3つのインターフェースが表示されます。3番目を使用します。

/ etc / network / interfacesを編集します

auto enp0s8
iface enp0s8 inet static
    address 192.168.56.10
    netmask 255.255.255.0

その後sudo ifup enp0s8。enp0s8が正しいアドレスを取得したかどうかを確認します。あなたはあなたのIPを見るはずです:

 $ ip addr show enp0s8
 ...
    inet 192.168.56.10/24 brd 192.168.56.255 scope global secondary enp0s8

そうでない場合は、実行することができます sudo ifdown enp0s8 && sudo ifup enp0s8

/superuser/424083/virtualbox-host-ssh-to-guest/424115#424115


3
ホストオンリーネットワークがオンで、静的ゲストIP 192.168.59.1を指定192.168.56.10した場合、これは機能しません。クラスCサブネットアドレス全体が正確に一致する必要があるため192.168.59.10、代わりにゲスト内部などを使用する必要があります。
Quolonelの質問2017

16

ホストマシンからVirtualBoxで実行されているUbuntu VMにSSHで接続するには、VM用に2つのネットワークアダプターを設定する必要があります。

まず、VMをまだ停止していない場合は停止します。

次に、VMを選択し、VirtualBoxツールバーの[設定]メニューをクリックします。

ここに画像の説明を入力してください

アダプター1のセットアップ

ここに画像の説明を入力してください

アダプター2のセットアップ

ここに画像の説明を入力してください

(注:ポート転送を設定する必要はありません。)

それでおしまい。設定したら、VMを起動できます。VMでは、ネットワーク構成は次のようになり、インターネットにもアクセスできます。

ここに画像の説明を入力してください

また、ホストマシンで、sshを使用してVMにアクセスできます。

ここに画像の説明を入力してください

SSHサーバーがインストールされ、VMで実行されていることを確認してください。

$ ps aux | grep sshd
root 864 0.1 0.5 65512 5392 ? Ss 22:10 0:00 /usr/sbin/sshd -D

そうでない場合は、インストールします。

$ sudo apt-get install openssh-server

また、参考までに:

  • 私のVirtualBoxバージョン:5.2.6 r120293(Qt5.6.2)、2018
  • 私のUbuntuバージョン:Ubuntu 16.04.3 LTS
  • 私のホストマシン:Windows 10

:あなたは任意のホストオンリーアダプタを持っていない場合は、1から作成することができますFile > Host Network Manager > Create
Cirelli94

悲しいことにインターネットに到達しない
Cirelli94

5
自宅に戻るSSH /インターネットからOffice VirtualBoxゲストマシン

ここで他のユーザーによって提供された答え: How to SSH to a VirtualBox guest externally through a host?

...インターネットから自宅のコンピューターのゲストマシンに接続するタスクを実行するのに役立ちました。コンピューター、タブレット、スマートフォン(Android、iPhoneなど)を使用して接続できるはずです。他の誰かに役立つかもしれない場合に備えて、もう少しステップを追加します。

これが私のセットアップの簡単な図です:

  • Remote device ---> INTERNET --> MODEM --> ROUTER --> HOST MACHINE --> GUEST VM

  • Remote device (ssh client) ---> PASS THRU DEVICES ---> GUEST VM (ssh server)

  • Remote device (leave ssh port 3022) ---> INTERNET --> MODEM --> ROUTER (FWD frm:p3022 to:p3022)--> HOST MACHINE (FWD frm:p3022 to:p22) --> GUEST VM (arrive ssh port 22)

私にとっての鍵は、すべての接続がPASSING-THROUGHリモートPCから自宅のゲスト仮想マシンに到達するための仲介デバイスであることを理解することでした-ポートフォワーディング!

注:*安全な接続をリクエストするsshクライアントと、安全な接続を処理する実行中のsshサーバーが必要です。

  • 上記で選択した回答で使用されているように、ポート3022を転送します。

  • 必要に応じてIP(ホームモデム/ルーター、ホストIP、ゲストIPなど)を入力します。選択した名前は、単なる使用例または変更です。

1.モデムのIP /ルーターの外部IPアドレスのポート3022へのSSHトンネルを作成します。

ssh client/device possible commands: ssh -p 3022 user-name@home_external_IP

2.ポート転送=ルーターからホストマシンへの接続を通過します

  • また、ルーターのファイアウォール/ IPtableルールがポートの転送を許可していることを確認してください(必要に応じて開きます)

  • ルーターのPfwd SCREEN必須エントリ:AppName:SSH_Fwd、Port_from:3022、プロトコル:both(UDP / TCP)、IP_address:hostIP_address、Port_to:3022、その他はすべて空白にできます

DD-WRTルーターソフトウェアリソース/情報:

3.ホストマシンファイアウォール:ポート3022を開く#so転送されたポートがゲストマシンを通過できる

  • ホストマシン:VirtualBox、ゲスト追加、ゲストマシンをまだインストールしていない場合はインストールします

  • ゲストマシンを構成してから、以下のネットワークセクションに従ってください

  • VirtualBox GUIを使用してゲストのネットワークをセットアップした-CLIよりも簡単

  • 他の方法を使用する場合は、次を参照してください。 VirtualBox/manual/ch06.html#natforward

4.一部のユーザーは、ゲストにネットワークブリッジアダプターを使用することを提案しています= LANおよびLAN上の他のマシンへのアクセス。これにより、セキュリティリスクが高まります。これは、ファイアウォールが適切に設定されていない場合、ゲストマシンがLANマシンにさらされ、インターネットハッカーにさらされる可能性があるためです。そこで、ブリッジされたセキュリティリスクへの露出を減らすために、NATに接続されたネットワークアダプターを選択しました。

ゲストマシンで以下を実行します。

  • ゲストマシンVirtualBoxネットワーク設定:アダプター1:NATに接続
  • ゲストマシンVirtualBoxポート転送ルール:名前:外部_SSH、プロトコル:TCP、ホストポート:3022、ゲストポート22、ホストとゲストIP:空白のままにします
  • [ネットワーク]セクションで[事前]をクリックし、[ポート転送]をクリックしてルールを入力します
  • ゲストマシンファイアウォール:ポート22を開く#so ssh接続を開始できる
  • ゲストマシン:sshサーバーがインストールされ、適切に構成され、実行されていることを確認します
  • コマンドでwsコマンドが実行されているかどうかを確認するLINUXテスト:sudo service ssh status
  • netstatをチェックして、ゲストマシンのポート22に接続されているかどうかを確認できます

また、使用しているプラ​​ットフォームに応じて、異なるsshサーバーとクライアントがあります。

  • wikipedia/Secure_Shell
  • wikipedia/Comparison_of_SSH_servers
  • wikipedia/Comparison_of_SSH_clients

Ubuntuユーザーの場合:

  • ubuntu community: SSHOpenSSH/Configuring
  • ubuntu/community: OpenSSH/Keys

それはそれであるはずです。私が間違えた、または何かを追加したい場合-自由にしてください-私はまだ初心者です。

これが誰かを助けることを願っています。幸運を!


5

Windowsホストの場合、次のことができます。

  1. virtualbox managerで:
    1. virtualbox managerでctrl+ Gを選択し、
    2. 次にネットワークパネルに行きます
    3. プライベートネットワークを追加する
      1. DHCPのアクティブ化が選択されていないことを確認してください
  2. ネットワーク管理(Windows)
    1. 新しく作成されたvirtualbox host onlyアダプターと物理ネットワークカードを選択します
    2. 右クリックして「ブリッジを作成」を選択します
  3. 楽しい

4

ゲストからホストまたは他のサーバーへのポート転送を開始することもできます。これは、ゲストが「ロック」されている場合や、ModifyVMオプションを完了できない場合(たとえば、VBoxManageへのアクセス許可がない場合)に特に役立ちます。

3つのマイナーな要件は、1)(「コンソール」GUI、別のゲストなどを介して)VirtualBoxゲストにログインできる/できる、2)VirtualBox HOST(または他のサーバー)にアカウントを持っている、3)SSHおよびTCPである転送はブロックされません。

次の3つの要件を満たすことができると想定して、手順は次のとおりです。

  1. ゲストで実行netstat -rnし、デフォルトルートの宛先0.0.0.0へのゲートウェイアドレスを見つけます。それが「10.0.2.2」だとしましょう。この「ゲートウェイ」アドレスは、VirtualBoxホストの仮想IP(の1つ)です。
  2. ゲストでssh -R 2222:localhost:22 10.0.2.2、「10.0.2.2」がVirtualBoxサーバーのIPアドレスであるところを実行します-または-転送したい他のサーバーIP。
  3. ホストでssh 10.0.2.2 -p2222、10.0.2.2がステップ1で見つかったデフォルトゲートウェイ/ VBHost仮想IPであるところを実行します。ポート転送先のVirtualBoxホストでない場合、コマンドは次のとおりです。ssh localhost -p2222

4

次の手順に従って、仮想マシンで実行されているubuntu VMに、ホストマシンからputty(ポート転送なし)を使用してログインします。

  1. Virtualbox managerでvmを選択し、設定アイコンをクリックします。次に、ネットワークに移動し、次のように2つのアダプターを有効にします。

    • アダプター1(インターネットアクセス用):接続-> NAT、詳細->接続されているケーブルを確認します。
    • アダプター2:接続->ホストのみのアダプター、詳細設定->接続されているケーブルと無差別モードを確認->すべて許可。
  2. ubuntu vmを起動します。

  3. rootとしてVMにログインします。
  4. 以下のようにファイル「/ etc / network / interfaces」を編集して保存します。

    auto lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet dhcp
    
    auto eth1
    iface eth1 inet dhcp
    
  5. VMを再起動します。

  6. VMにログインし、以下のコマンドを実行して、eth1に割り当てられたIPを確認します。

    ifconfig
    
  7. このIPを使用して、VMのパテセッションを開きます。



2

Ubuntu 18.04 LTS

サーバーIPを確認し、「ポート転送」なしで接続するためのブリッジ付き構成

VirtualBox>サーバーで右クリック>設定>ネットワーク>アダプター2を有効化>「ブリッジ」を選択>無差別モード:すべて許可>接続されているケーブルを確認>サーバーを起動

Ubuntuサーバーでsudo nano /etc/netplan/*init.yamlファイルを編集し、

私のサンプルファイル:

network:
    ethernets:
        enp0s3:
            addresses: []
            dhcp4: true
        enp0s8:
            addresses: [192.168.0.200/24]
            dhcp4: no
            dhcp6: no
            nameservers:
               addresses: [8.8.8.8, 8.8.4.4]
    version: 2

あなたを助けるコマンド

nano /etc/netplan/file.yaml     # file to specify the rules of network
reboot now                      # restart ubuntu server right now
netplan apply                   # do after edited *.yaml, to apply changes
ifconfig -a                     # show interfaces with ip, netmask, broadcast, etc...
ping google.com                 # to see if there is internet

Ubuntu 18.04 LTSサーバーでの静的IPアドレスの構成-NetPlanを使用


1

ネットワーク設定をブリッジに設定するだけでうまくいきました。

これを行うと、IPが変更されます。しかし、私の場合はすぐには変わりませんでした。ifconfig同じIPを返しました。私はvmとboomを再起動し、ipは192. *で開始するように設定され、すぐにsshアクセスが許可されました。


私が推測しているこの情報は、一般的な意味で部分的または完全に不正確でさえあり、私にはわかりません。反対投票者は言うことを迷わなかった。
boulder_ruby 14

つまり、「一部では機能しない」ということです。
boulder_ruby 14

0

安全なネットワークでは、ネットワークをブリッジに設定しても機能しない場合があります。管理者は、ポートごとに1つのMACアドレスのみを許可するか、スイッチが1つのポートで複数のMacを検出した場合、さらに悪いことにポートをブロックできます。

私の意見では、最善の解決策は、マシンで実行したい追加のサービスを処理するために追加のネットワークインターフェイスをセットアップすることです。したがって、ラップトップを家に持ち帰ったときにブリッジを可能にするブリッジインターフェースがあり、ネットワーク上の他のデバイスからSSHで接続できます。また、接続時にラップトップからVMにSSHで接続したい場合は、ホストのみのアダプターを使用できます。キャンパスのeduroam wifiネットワークに接続します。


0

NATネットワークアダプターを使用し、ポート転送を追加します。実際のホストIPについて言及します。127.0.0.1またはlocalhostは使用しないでください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.