Bagaimana SSH ke tamu VirtualBox secara eksternal melalui host? [Tutup]


644

Saya memiliki VM Ubuntu yang berjalan di mesin Windows 7 saya. Bagaimana cara mengaturnya sehingga saya dapat mengakses server web secara eksternal melalui SSH?

Saya menemukan langkah-langkah ( Setup SSH akses antara VirtualBox Host dan Guest VMs ) untuk dapat ssh ke tamu saya dari host saya, tetapi itu masih membuat saya masalah mengaksesnya melalui router saya.

Saya kira saya bisa menginstal server SSH pada mesin Windows saya dan kemudian tunnel beberapa kali (walaupun saya tidak 100% yakin apa yang harus digunakan dalam hal lokal, dinamis, dll. Atau bagaimana cara mengatur beberapa terowongan?), tetapi apakah ada cara untuk membuat VM langsung dapat diakses oleh router saya sehingga saya bisa langsung port forward ke sana?


3
Ada cara yang jauh lebih mudah untuk melakukan ini, menggunakan Vagrant (yang membuat VM siap pakai (ssh-dapat diakses, ip-diakses) dari file konfigurasi atau GUI). Saya tidak tahu kasus penggunaan Anda, tetapi saya telah menulis tutorial besar tentang Cara membuat server Ubuntu yang dapat diakses ssh dengan Vagrant , berguna ketika Anda ingin mengatur mesin pengembangan berbasis LAMP.
Sliq

1
Vagrant adalah alat yang hebat, tetapi tidak kompatibel dengan versi virtualbox yang lebih baru
LizH

2
Jawaban terbaik ada di bawah: stackoverflow.com/a/10410527/2214806
Michael


Apakah berpikir bisa berguna untuk memiliki baru, spesifik, tempat di mana berbicara tentang virtualisasi area51.meta.stackexchange.com/questions/28201/...
realtebo

Jawaban:


1308

Cara terbaik untuk masuk ke tamu Linux VirtualBox VM adalah penerusan porta . Secara default, Anda seharusnya sudah memiliki satu antarmuka yang menggunakan NAT . Lalu pergi ke pengaturan Jaringan dan klik tombol Port Forwarding . Tambahkan Aturan baru . Sebagai nama aturan, masukkan "ssh". Sebagai "Host port", masukkan 3022. Sebagai "Guest port", masukkan 22. Segala sesuatu yang lain dari aturan dapat dibiarkan kosong.

atau dari baris perintah

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

di mana 'myserver' adalah nama VM yang dibuat. Periksa aturan yang ditambahkan:

VBoxManage showvminfo myserver | grep 'Rule'

Itu saja! Pastikan Anda tidak lupa menginstal server SSH di VM:

sudo apt-get install openssh-server

Untuk SSH ke dalam VM tamu, tulis:

ssh -p 3022 user@127.0.0.1

Di mana usernama pengguna Anda di dalam VM.


24
@Keyslinger, apakah ini yang Anda cari? ssh -p 3022 user@127.0.0.1 Itu adalah satu langkah yang saya lewatkan dan baru saja temukan di situs lain.
D. Woods

10
Saya juga menambahkan port redirect dari 2020 ke 80, jadi saya dapat dengan mudah mengakses Apache dari browser menggunakan 192.0.0.1.2020 . VBoxManage modifiedvm myserver --natpf1 "ssh, tcp ,, 2020,, 80"
Eduardo Russo

4
thebigdog, Anda dapat langsung tanpa kepala: VBoxHeadless -s 'vmname'
vkostromin

4
Mengapa kita menggunakan port 3022 dan bukan default 22?
Seraphim

3
Untuk membuat hidup lebih mudah, buka ~ / .ssh / config, tambahkan berikut ini Host mybox HostName 127.0.0.1 User myuser Port 3022ke file itu (tambahkan indentasi sendiri), maka Anda hanya perlu ssh myboxsetiap kali :)
vancexu

129

Ubah tipe adaptor di VirtualBox ke bridged, dan atur tamu untuk menggunakan DHCP atau atur alamat IP statis di luar batas DHCP. Ini akan menyebabkan Mesin Virtual bertindak seperti tamu normal di jaringan rumah Anda. Anda kemudian dapat port forward.


2
Adakah Ide bagaimana konfigurasi 2 adapter akan bekerja? Satu di NAT dan lainnya di Host Only?
CantGetANick

16
Menurut pendapat saya mengekspos VM di jaringan lokal bukan pilihan terbaik (misalnya di jaringan kantor), solusi yang diusulkan oleh @vkostromin membuat enkapsulasi VM di dalam host.
Victor P.

1
@ Viktor. dapatkah Anda menjelaskan mengapa itu bukan pilihan terbaik di jaringan kantor? Apakah karena keamanan atau?
mdo123

1
Bahkan mengetahui bahwa itu bukan pilihan terbaik, dalam konfigurasi saya saat ini mengatur adaptor untuk dijembatani adalah satu-satunya solusi yang berfungsi.
James

69

Menjaga adaptor NAT dan menambahkan adaptor host-only kedua berfungsi dengan luar biasa, dan sangat penting untuk laptop (di mana jaringan eksternal selalu berubah).

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

Ingatlah untuk membuat jaringan hanya host di kotak virtual itu sendiri (GUI -> pengaturan -> jaringan), jika tidak, Anda tidak dapat membuat antarmuka hanya host pada tamu.


2
Hanya jawaban ini yang bekerja untuk saya, tidak ada yang berhasil. Juga, saya baru saja menambahkan adaptor tambahan dan berfungsi, tidak perlu mengedit /etc/network/interfaces, Terima kasih!
brokenfoot

3
Setuju ini adalah jawaban terbaik. Jika tidak, Anda melompat sedang melalui lingkaran setiap kali Anda ingin mengakses layanan umum ( ssh, sftp, dll) karena Anda akan harus melalui port non-standar.
Kirk Woll


1
sumber bagus lain tentang pengaturan ini 2buntu.com/articles/1513/…
mdo123

1
@Parker apakah sshd berjalan? Apakah ada port penutupan firewall?
orip

24

Anda juga dapat menggunakan Bridged Network (atau "Bridge Adapter", dalam versi yang lebih baru) dalam pengaturan jaringan . Ini akan menempatkan VM Anda dalam VLAN dengan mesin Anda. Jadi Anda bisa ssh ke VM seperti ini.

ssh user @ IP_OF_VM


Dengan solusi ini, apakah koneksi SSH melintasi LAN?
user2233706

23

Bagaimana melakukan jaringan host-only ( lebih baik daripada bridged) untuk Solaris 10 dan Ubuntu 16.04

Tambahkan antarmuka khusus Host

  1. Virtualbox> File> Preferensi> Jaringan> Host-only Networks> Tambah
  2. Shutdown vm.
  3. Pengaturan VM> Jaringan. Adaptor pertama harus Nat, hanya Host kedua.
  4. Mulai cmd.exe dan jalankan ipconfig /all. Anda akan melihat garis:

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

    Adaptor kedua di tamu juga harus di 192.168.59. *.

  5. Mulai VM.

Solaris 10

  1. Periksa pengaturan ifconfig -a . Anda akan melihat e1000g0 dan e1000g1. Kami tertarik pada e1000g1.
  2. ifconfig e1000g down
  3. ifconfig e1000g 192.168.56.10 netmask 255.255.255.0 up
  4. Periksa dari host apakah antarmuka ini dapat dijangkau: ping 192.168.56.10

Pertahankan pengaturan itu saat reboot

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

Konfigurasikan layanan ssh ( administrasi ) untuk login sebagai root (tidak disarankan)

Periksa apakah ssh diaktifkan

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

Ubah / etc / ssh / sshd_config jadi ada

PermitRootLogin yes

Mulai kembali layanan ssh

svcadm restart ssh

Dari host, periksa

ssh root@192.168.56.10

Ubuntu 16.04

Daftar antarmuka:

ip addr

Anda akan melihat tiga antarmuka seperti lo, enp0s3, enp0s8. Kami akan menggunakan yang ketiga.

Edit / etc / network / interfaces

auto enp0s8
iface enp0s8 inet static
    address 192.168.56.10
    netmask 255.255.255.0

Lalu sudo ifup enp0s8. Periksa apakah enp0s8 mendapatkan alamat yang benar. Anda akan melihat ip Anda:

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

Jika tidak, Anda dapat lari sudo ifdown enp0s8 && sudo ifup enp0s8

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


3
Ini tidak berfungsi jika jaringan khusus host Anda aktif 192.168.59.1dan Anda menentukan 192.168.56.10untuk IP tamu statis. Seluruh alamat subnet C kelas harus sama persis, jadi Anda harus menggunakan sesuatu seperti 192.168.59.10di dalam tamu.
Pertanyaan Quolonel

16

Untuk melakukan ssh ke VM Ubuntu yang berjalan di VirtualBox dari mesin host Anda, Anda perlu mengatur dua adapter jaringan untuk VM.

Pertama-tama, hentikan VM jika belum.

Kemudian pilih VM dan klik menu Pengaturan di bilah alat VirtualBox:

masukkan deskripsi gambar di sini

Mengatur Adaptor 1

masukkan deskripsi gambar di sini

Siapkan Adaptor 2

masukkan deskripsi gambar di sini

(Catatan: Anda tidak perlu mengatur penerusan port apa pun.)

Itu dia. Setelah diatur, Anda dapat memulai VM Anda. Di VM Anda, konfigurasi jaringan akan terlihat seperti di bawah ini dan Anda akan memiliki akses Internet juga:

masukkan deskripsi gambar di sini

Juga di mesin host Anda, Anda dapat melakukan ssh ke VM Anda:

masukkan deskripsi gambar di sini

Pastikan bahwa server SSH telah diinstal dan berjalan di VM.

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

Jika tidak, instal:

$ sudo apt-get install openssh-server

Juga untuk informasi Anda:

  • Versi VirtualBox saya: 5.2.6 r120293 (Qt5.6.2), 2018
  • Versi Ubuntu saya: Ubuntu 16.04.3 LTS
  • Mesin host saya: Windows 10

Jika Anda tidak memiliki adaptor khusus host, Anda dapat membuatnya dari:File > Host Network Manager > Create
Cirelli94

Sayangnya, itu tidak mencapai jaringan internet
Cirelli94

5
SSH Kembali ke Rumah / Kantor Anda VirtualBox Guest Machine Dari INTERNET

Jawaban yang diberikan oleh pengguna lain di sini: How to SSH to a VirtualBox guest externally through a host?

... membantu saya menyelesaikan tugas menyambungkan dari luar di internet ke mesin tamu komputer di rumah saya. Anda harus dapat terhubung menggunakan komputer, tablet, dan ponsel pintar (android, IPhone, dll). Saya menambahkan beberapa langkah lagi seandainya mungkin bermanfaat bagi orang lain:

Berikut adalah diagram singkat pengaturan saya:

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

Kuncinya bagi saya adalah menyadari bahwa SEMUA koneksi adalah PASSING-THROUGHperangkat perantara untuk mendapatkan dari PC jarak jauh ke mesin virtual tamu saya di rumah - port forwarding Hore!

Catatan: * Perlu ssh klien untuk meminta koneksi yang aman dan server ssh yang berjalan untuk memproses koneksi yang aman.

  • Saya akan meneruskan port 3022 seperti yang digunakan dalam jawaban yang dipilih dari atas.

  • Masukkan IP Anda jika diperlukan (modem rumah / router, IP host, IP tamu, dll.), Nama yang dipilih hanyalah contoh-gunakan atau ubah.

1.Buat terowongan ssh ke port 3022 pada IP modem / alamat IP eksternal router Anda.

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

2.Port forward = kita melewati koneksi dari router ke mesin host

  • Pastikan juga aturan firewall / IPtable pada router memungkinkan port untuk maju (terbuka jika diperlukan)

  • Entri yang diwajibkan Pfwd SCREEN: AppName: SSH_Fwd, Port_from: 3022, Protokol: keduanya (UDP / TCP), IP_address: hostIP_address, Port_to: 3022, semuanya dapat kosong

Sumber daya perangkat lunak router DD-WRT / Info:

3.Host Machine Firewall: port terbuka 3022 #jadi port yang diteruskan dapat melewati melalui mesin tamu

  • Mesin Host: Instal VirtualBox, tambahan tamu, dan mesin tamu jika belum dilakukan

  • Konfigurasikan mesin tamu dan kemudian ikuti bagian Jaringan di bawah ini

  • Saya menggunakan VirtualBox GUI untuk mengatur jaringan tamu - lebih mudah daripada CLI

  • Jika Anda ingin menggunakan metode lain, rujuk ke: VirtualBox/manual/ch06.html#natforward

4. Beberapa menyarankan menggunakan adapter Network Bridge untuk guest = akses ke LAN dan mesin lain pada LAN Anda. Ini juga menimbulkan risiko keamanan yang meningkat, karena sekarang mesin tamu Anda sekarang terpapar ke mesin LAN dan mungkin peretas INTERNET jika firewall tidak dipasang dengan benar. Jadi saya memilih Network adapter yang terpasang pada NAT untuk mengurangi risiko keamanan yang dijembatani.

Pada mesin tamu lakukan hal berikut:

  • Pengaturan Jaringan VirtualBox Guest Machine: Adaptor 1: Terlampir ke NAT
  • Mesin Tamu Aturan VirtualBox Port Forwarding: Nama: External_SSH, Protokol: TCP, Host Port: 3022, Guest Port 22, Host & IP tamu: biarkan kosong
  • klik maju di bagian Jaringan kemudian klik pada penerusan Port untuk memasukkan aturan
  • Guest Machine Firewall: port terbuka 22 # sehingga koneksi ssh dapat masuk
  • Mesin Tamu: Pastikan server ssh diinstal, dikonfigurasi dengan benar, dan berjalan
  • Uji LINUX untuk melihat apakah ssh server menjalankan w / command: sudo service ssh status
  • Dapat memeriksa netstat untuk melihat apakah koneksi dilakukan ke port 22 di mesin tamu

Juga ada berbagai ssh server dan klien tergantung pada platform yang digunakan.

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

Untuk Pengguna Ubuntu:

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

Seharusnya begitu. Jika saya melakukan kesalahan atau ingin menambahkan sesuatu - jangan ragu untuk melakukannya - saya masih noob.

Semoga ini bisa membantu seseorang. Semoga berhasil!


5

Untuk host Windows, Anda dapat:

  1. Di virtualbox manager:
    1. pilih ctrl+ Gdi manajer kotak virtual Anda,
    2. lalu pergi ke jaringan pannel
    3. tambahkan jaringan pribadi
      1. pastikan bahwa mengaktifkan DHCP TIDAK dipilih
  2. Dalam manajemen jaringan (windows)
    1. Pilih adaptor host virtualbox yang baru dibuat dan kartu jaringan fisik
    2. Klik kanan dan pilih "Buat jembatan"
  3. Nikmati

4

Anda juga dapat menginisialisasi port ke HOST Anda, ATAU SERVER LAINNYA, dari Tamu Anda. Ini sangat berguna jika Tamu Anda 'dikunci' atau tidak dapat menyelesaikan opsi ModifyVM (mis. Tidak ada izin untuk VBoxManage).

Tiga persyaratan minor adalah 1) Anda dapat / dapat login ke VirtualBox Guest (melalui 'konsol' GUI, Guest lain, dll), 2) Anda memiliki akun di VirtualBox HOST (atau Server lain), dan 3) SSH dan TCP penerusan tidak diblokir.

Anggap Anda dapat memenuhi 3 persyaratan, ini adalah langkah-langkahnya:

  1. Pada Tamu, jalankan netstat -rndan temukan alamat Gateway ke tujuan rute default 0.0.0.0. Katakanlah "10.0.2.2". Alamat 'Gateway' ini adalah (salah satu) Virtual IP Host virtualBox.
  2. Pada Tamu, jalankan di ssh -R 2222:localhost:22 10.0.2.2mana "10.0.2.2" adalah alamat IP server VirtualBox-ATAU - IP server lain yang ingin Anda port forward.
  3. Di Host, jalankan di ssh 10.0.2.2 -p2222mana 10.0.2.2 adalah default gateway / VBHost virtual IP ditemukan di langkah 1. Jika BUKAN host VirtualBox Anda port forwarding, maka perintahnya adalahssh localhost -p2222

4

Ikuti langkah-langkah di bawah ini untuk masuk ke VM ubuntu Anda yang berjalan di kotak virtual dari mesin host menggunakan dempul (Tanpa port forwarding):

  1. Pada manajer Virtualbox pilih vm, klik ikon pengaturan. Lalu buka Networks dan aktifkan dua adapter seperti di bawah ini:

    • Adaptor 1 (Untuk akses internet): Terlampir ke -> NAT, Advanced -> Periksa kabel yang terhubung.
    • Adaptor 2: Terlampir ke -> Adaptor khusus host, Lanjutan -> Periksa kabel yang terhubung dan mode Promiscuous -> Izinkan semua.
  2. Mulai vm ubuntu.

  3. Login ke VM sebagai root.
  4. Edit file '/ etc / network / interfaces' seperti di bawah ini dan simpan:

    auto lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet dhcp
    
    auto eth1
    iface eth1 inet dhcp
    
  5. Mulai ulang VM.

  6. Login ke VM dan jalankan perintah di bawah ini untuk memeriksa IP yang dialokasikan untuk eth1:

    ifconfig
    
  7. Gunakan IP ini untuk membuka sesi dempul untuk VM.



2

Ubuntu 18,04 LTS

Konfigurasi dengan bridged untuk melihat ip server, dan terhubung tanpa "port forwarding"

VirtualBox> klik kanan di server> pengaturan> Jaringan> aktifkan adaptor 2> pilih "dijembatani"> Mode promiscuous: izinkan semua> Periksa kabel yang terhubung> mulai server

Di server ubuntu, edit sudo nano /etc/netplan/*init.yamlfile,

File sampel saya:

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

Perintah yang akan membantu Anda

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

Konfigurasikan Alamat IP Statis Pada Ubuntu 18.04 LTS Server - dengan NetPlan


1

Cukup mengatur Network Setting ke bridged, lakukan trik untuk saya.

IP Anda akan berubah ketika Anda melakukan ini. Namun, dalam kasus saya itu tidak segera berubah. ifconfigmengembalikan ip yang sama. Saya me-reboot vm dan boom, ip mengatur sendiri untuk memulai dengan 192. * dan saya langsung diizinkan akses ssh.


Informasi ini saya kira sebagian atau bahkan seluruhnya tidak akurat dalam arti umum, saya tidak tahu. downvoter tidak repot-repot mengatakannya.
boulder_ruby

Sebenarnya, "bagi sebagian orang, itu tidak berhasil."
boulder_ruby

0

Pada jaringan aman yang mengatur jaringan Anda untuk menjembatani mungkin tidak berfungsi. Administrator hanya dapat mengizinkan satu alamat mac per port atau bahkan lebih buruk lagi memblokir port jika switch mendeteksi beberapa mac pada satu port.

Solusi terbaik menurut saya adalah mengatur antarmuka jaringan tambahan untuk menangani layanan tambahan yang ingin Anda jalankan di mesin Anda. Jadi saya memiliki antarmuka jembatan untuk memungkinkan menjembatani ketika saya membawa laptop saya pulang dan dapat SSH ke dalamnya dari perangkat lain di jaringan saya serta adaptor host saja ketika saya ingin SSH ke VM saya dari laptop saya ketika saya terhubung ke jaringan wifi eduroam di kampus.


0

Gunakan adapter jaringan NAT dan Add port forward. Sebutkan host ip yang sebenarnya. Jangan gunakan 127.0.0.1 atau localhost.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.