Bagaimana saya bisa mengaturnya sehingga saya bisa SSH ke VM tamu VMWare saya?

16

Untuk beberapa alasan, dokumentasi tentang proses ini di internet cukup kurang atau ketinggalan zaman. Pada dasarnya, saya memiliki mesin virtual tamu VMWare di VMWare Fusion (menjalankan Ubuntu 10.10), dan saya memiliki Mac OSX 10.6 sebagai tuan rumah. Saya ingin dapat SSH dari Mac ke Linux VM. Bagaimana saya dapat mengkonfigurasi hal-hal sehingga ini mungkin?

Derek Thurn
sumber
Terkait: superuser.com/questions/729712/... Setidaknya pada Windows, Anda bisa ssh ke IP yang diatur secara otomatis oleh VMWare.
Ben

Jawaban:

13

benar-benar - ini hanya masalah menggunakan antarmuka lokal saja, atau dijembatani, dan bekerja di luar alamat ip sistem yang menjalankan server ssh (menggunakan perintah ifconfig). instal openssh-server pada VM, gunakan klien ssh Anda, dan selesai.

Jika Anda menggunakan antarmuka NAT, ini mungkin lebih rumit, dan umumnya tidak disarankan.

Journeyman Geek
sumber
1
Bagi orang yang tidak tahu, jangan lupa untuk memulai menggunakan ssh server service sshd startatau jika Anda ingin memulainya saat menjalankan bootupchkconfig sshd on
Anthony Hatzopoulos
21

Sebenarnya, ada sejumlah alasan bagus untuk menggunakan NAT dengan VM Anda, bukan antarmuka yang dijembatani .. (Ini adalah pertanyaan lama, tetapi muncul sebagai hasil pertama saya mencari cara melakukan ini, bermigrasi dari VirtualBox tempat saya melakukan sepanjang waktu, jadi saya pikir ini layak ditambahkan)

Hanya beberapa alasan untuk menggunakan NAT adalah:

  • Mudah dan portabel
  • jika Anda menggunakan LAN pelanggan yang membutuhkan alamat MAC yang dikenal untuk mendapatkan IP (jika tidak, Anda harus mencoba menebak yang tidak terpakai dan mempertaruhkan konflik, dan umumnya menarik perhatian buruk pada diri sendiri :)),
  • hal-hal seperti mengizinkan VMs Anda untuk menggunakan server proxy tunggal pada host Anda (yaitu jika Anda tidak mengontrol jaringan yang sedang Anda gunakan), atau dapat membuat firewall / filter lalu lintas siaran (windows dll) mereka di jalan keluar dalam satu tempat yang nyaman.
  • bisa menetapkan IP tetap atau dilindungi undang-undang agar Anda dapat merujuknya dengan nama / IP dari luar host (sekali lagi, jika Anda tidak bisa mendapatkan reservasi di jaringan dengan antarmuka yang dijembatani)
  • tetapi yang terpenting, ini memungkinkan Anda untuk bersembunyi di balik konfigurasi firewall tunggal pada host Anda, dan berbagi hal-hal di antara Anda / mereka dengan cara yang lebih terlindungi, daripada mengekspos setiap VM ke "liar" dan harus melindungi mereka semua secara individu dll .. Sama seperti yang Anda lakukan dengan modem / router internet

Ngomong-ngomong, untuk kasus saya (VMWare Workstation 10, host Linux, OS X Guest), dan siapa saja yang menemukan ini, ini adalah ikhtisar dari apa yang bekerja untuk saya. Terlepas dari waffling dan what-ifs, sebenarnya hanya ada 3 langkah utama.

  • Jadi, pertama-tama Anda harus memutuskan apa yang ingin Anda izinkan untuk VM / tamu Anda dari "di luar" host Anda (perhatikan seperti di bawah ini, Anda akan dapat mengaksesnya dengan mudah dari host itu sendiri). Taruhan aman hanya akan mengekspos / memperbolehkan hanya SSH (port 22), ke mesin-mesin di subnet Anda. Anda juga dapat mengizinkan port 80/443 jika Anda memiliki server web di VM, dll, dan Anda juga dapat menggunakan "tunnel" untuk mengakses layanan lain menggunakan SSH (akan memberikan contoh di bawah), dan menggunakan FUSE / SSHFS untuk memberikan host Anda akses filesystem .. (Atau fasilitas folder bersama di VMWare, tapi saya belum menggunakannya).

Jadi idenya adalah seperti: "Izinkan hal-hal di jaringan lokal host saya (Eg 10.1.1.0/24, atau 192.168.1.0/24) untuk terhubung ke port 22222 pada host, yang akan kami teruskan ke port 22 dari tamu spesifik ". Itu harus menjadi tamu tertentu saja (Ini membuat Anda dapat mengkonfigurasi IP Anda menjadi lebih berguna, dan Anda dapat mengubahnya semuanya di satu tempat tanpa membuka setiap VM), seperti halnya melakukannya melalui router internet Anda untuk memungkinkan hal-hal bermain game melalui dll

  • Selanjutnya, setelah memutuskan layanan mana, Anda harus melakukannya

    • memungkinkan koneksi pada mesin host Anda ke port "eksternal" melalui iptables / firewall. Port 22 mungkin sudah digunakan di host oleh sshd, jadi Anda bisa menggunakan sesuatu seperti 22222. Dalam hal ini, tambahkan sesuatu seperti ini ke /etc/ufw/before.rules (dan restart ufw)

      # Jaringan / subnet mask lokal Anda mungkin sekitar 10.1.1.0/24 ...

      -A ufw-sebelum-input -p tcp --dport 22222 -m state --state NEW -s my_subnet_and_mask -j MENERIMA `

    • berikan VM Anda IP cadangan di konfigurasi VMware DHCP utama ( opsional, tetapi lebih mudah untuk diandalkan jika Anda ingin "mencubit" dari host ), dengan menambahkan sesuatu seperti ini di bagian bawah / etc / vmware / vmnet8 / dhcpd / dhcpd.conf

      # Just like a normal dhcpd reservation
      host my_vm_1 {
           hardware ethernet *your_vm_eth_mac_here**;
           # This is in default range for guests, but outside the 'pool'.
           # - check that it matches your vmware config
           fixed-address 192.168.198.10; 
           # And/or your own internal nameserver etc
           option domain-name-servers 8.8.8.8;
           option domain-name "some_domain_suffix";
           # This is the default default-route of the VM
           option routers 192.168.198.2; 
      }
      
    • Beri tahu VMWare untuk meneruskan koneksi dari 22222 ke tamu: 22 dengan menambahkan ini ke bagian [incomingtcp] di /etc/vmware/vmnet8/nat/nat.conf, lalu mulai kembali layanan vmware (lihat catatan di bawah)

      [incomingtcp]

      22222 = 192.168.198.10:22

    • Anda mungkin juga perlu mengizinkan koneksi port 22 di tamu Anda, tergantung pada apa itu / jika memiliki firewall sendiri. Dalam OS X guest case ini, itu untuk mengaktifkan "login jarak jauh" melalui pengaturan Berbagi, di linux mungkin melalui ufw seperti pada host di atas, dll

Jadi, setelah semuanya selesai, Anda bisa menggunakan laptop atau mesin lain di LAN, ssh ke workstation Anda (host vmware) di 22222, dan Anda akan dibawa ke tamu yang Anda suruh untuk meneruskannya. Seperti disebutkan di atas, jika Anda juga mengatakan ingin dapat terhubung ke server postgres pada tamu (atau server vnc, yang sering tidak terenkripsi), Anda dapat melakukan tunnel pada perintah yang sama (alih-alih menambahkannya juga ke dhcp conf). Untuk misalnya

console ~> ssh root@hostip -p 22222 -L 54320:localhost:5432

dan Anda akan dibawa ke tamu melalui ip forward di vmware, dan bisa mengarahkan alat pgadmin3 Anda ke localhost: 54320 (non-priveleged) di laptop Anda, dan lalu lintas Anda di jaringan akan dienkripsi. (Catatan 'localhost' sudah ada diteruskan ke tamu)

Catatan

  • Ada segala macam cara untuk melakukan ini .. Untuk satu, Anda bisa tunnel untuk menjadi tuan rumah dan menentukan ip tamu di -L dan itu akan "keluar" dan mengarahkan Anda ke sana, tetapi opsi nat.conf bagus dan nyaman, dan Anda tidak harus mengetiknya setiap kali. Ada juga cara lain untuk meneruskan porta
  • Saya telah melihat referensi pada beberapa utas gui jaringan virtual untuk melakukan ini (seperti yang dimiliki virtualbox), tetapi saya tidak dapat menemukannya di versi ini
  • Saya tidak menggunakan windows, jadi meskipun saya menganggap itu akan sangat mirip dengan mengkonfigurasi sebagai tuan rumah, saya tidak yakin. Konfigurasi NAT harus bekerja untuk semua tamu vmware (walaupun saya belum menggunakan versi VMWare lainnya)
  • VMware mengatur rute sehingga tuan rumah dapat menghubungi tamu NAT secara langsung, yaitu dari konsol tuan rumah, saya dapat melakukan ping / ssh dll tamu NAT 192.168.198.10 (didefinisikan di atas) secara langsung

    console ~> route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    <snip>
    192.168.198.0   0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
    192.168.233.0   0.0.0.0         255.255.255.0   U     0      0        0 vmnet1
    
  • Dari catatan linux, ada beberapa mengutak-atik vmware dengan systemd init untuk memulai dengan baik` secara otomatis, dan seiring dengan itu saya menemukan saya tidak bisa hanya me-restart vmware (vmci tidak memuat lagi), dan saya harus memulai ulang mesin saya untuk membuat hal-hal NAT / DHCP di atas tetap, tetapi Anda mungkin tidak memiliki masalah. Ada beberapa utas dengan solusi systemd sekalipun
menggiring kucing
sumber
Kedengarannya hebat, tetapi ufw tampaknya tidak hadir pada mesin OS X 10.9.5 saya. Apakah itu sesuatu yang lebih tua dari OS X, tetapi sekarang menggunakan yang lain?
Steve Jorgensen
Hai @SteveJorgensen, ufw ada di bawah linux (Host saya adalah linux, dan guest adalah OS X dalam jawaban ini), tetapi ide yang sama dengan OS X sebagai host; memungkinkan akses ke beberapa port tertentu (dalam kasus 22222 di atas) pada host dengan alat apa pun yang sesuai, dan memberi tahu VMWare untuk melakukan penerusan kepada tamu. Penyebutan ufw lainnya adalah bahwa apa pun yang Anda miliki sebagai tamu, firewall mungkin juga diaktifkan, jadi Anda mungkin perlu masuk ke tamu dan mengizinkan akses ke port yang Anda arahkan ke (dalam kasus di atas, 22)
herdingofthecats
Saya tidak memiliki OS X yang tersedia saat ini, tetapi sepertinya saya ingat pernah menggunakannya ipfw. Saya telah mencari Anda dengan cepat, dan tidak melihat banyak posting bermanfaat, tetapi ini menyebutkan pfctl, yang saya lihat di posting lain tampaknya menjadi pengganti pfctl di OS X 10.10 ke atas. Saya tidak bisa mengujinya maaf, tapi saya harap ini membantu sedikit
herdingofthecats
2

Untuk menyederhanakan hal:

  1. Jalankan VM Anda
  2. Dari menu> Mesin Virtual> Adaptor Jaringan> Bridged.
  3. Di VM Anda, menemukan alamat IP Anda, seperti di linux: ifconfig.
  4. Dari tuan rumah, ssh menggunakan ssh user@ip.

Saya berasumsi Anda memiliki layanan SSH terinstal dan berjalan.

zed
sumber
1

Alih-alih mengetahui IP ke SSH ke dalam, saya telah mengatur Avahi pada tamu Linux saya sehingga menyiarkan nama host yang dinamis, periksa jawaban saya di sini: /superuser//a/710233/242604

Semoga ini membantu!

berto
sumber
-1

Anda dapat menggunakan antarmuka jaringan jembatan yang membantu menghubungkan ke Internet dan koneksi SSH mudah.

Hieu
sumber