Hyper-V ja minimaalinen Debian Linux

Näillä ohjeilla asennat Windows-koneellesi Debian Linux -virtuaalikoneen, jota voi käyttää PowerShell-terminaalista SSH-yhteydellä. Virtualisointiin käytät Microsoftin Hyper-V -ratkaisua, joka tulee Windows-käyttöjärjestelmän mukana.

SSH-yhteys Hyper-V:n päällä toimivaan Debian Linuxiin
SSH-yhteys Hyper-V:n päällä toimivaan Debian Linuxiin

Asenna Hyper-V Manager

Asenna Hyper-V Microsoftin Install Hyper-V on Windows 10 -ohjeen mukaisesti tai suorita alla olevat komennot ja käynnistä kone uudelleen.

# PowerShell
# Tarkista, onko Hyper-V jo aktivoitu
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V

# Kytke Hyper-V päälle
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

Myönnä käyttäjälle Hyper-V Administrator -oikeudet

Jos käytät konettasi ilman pääkäyttäjän oikeuksia, kannattaa tunnus lisätä ryhmään Hyper-V Administrators, joka sallii virtuaalikoneiden hallinnan. Lisäys onnistuu mm. Computer Management -työkalun avulla.

Tavallinen käyttäjä ei voi käynnistää virtuaalikonetta ilman oikeaa roolia
Tavallinen käyttäjä ei voi käynnistää virtuaalikonetta ilman oikeaa roolia

Lisää uusi virtuaalikone

  1. Lataa asennusmedia Debianin verkkosivuilta.
  2. Käynnistä Hyper-V Manager ja valitse ylävalikosta Action > New > Virtual Machine… tai Toiminnot > Uusi > Virtuaalikone.
Luo uusi virtuaalinen kone
Luo uusi virtuaalinen kone
  1. Asennusvelhon vaiheiden aikana:
    • syötä konenimeksi debian tai muu erikoismerkkejä sisältämätön yksinkertainen nimi,
    • valitse sukupolveksi toinen sukupolvi / generation 2 ja
    • määritä verkkosovittimeksi oletuskytkin / default switch.
Asennus kävi helposti, mutta Generation 2 -valinta vaatii secure bootin pois kytkemisen
Asennus kävi helposti, mutta Generation 2 -valinta vaatii secure bootin pois kytkemisen

Toisin kuin joissain nettilähteissä väitetään, Linux-jakelut tukevat Generation 2 -tilaa, mikä selviää mm. Microsoftin dokumenteista. Ainoana konnan koukkuna on Secure Boot -toiminto, joka pitää erikseen konfiguroida ja siitä enemmän myöhemmin.

Oletuskytkimellä virtuaalikone pystyy yhdistämään Internetiin ja isäntäkone virtuaalikoneeseen. Lähiverkon ja Internetin koneet eivät saa suoraa yhteyttä virtuaalikoneeseen, sillä isäntäkone toimii NAT-reitittimenä virtuaalikoneelle.

Asenna Debian Linux

  1. Napsauta virtuaalikone aktiiviseksi ja valitse Action > Settings tai Toiminto > Asetukset
  2. Valitse Security / Suojaus ja kytke pois päältä Enable Secure Boot / Ota käyttöön suojattu käynnistys
Kytke Secure Boot -toiminto pois päältä
Kytke Secure Boot -toiminto pois päältä
  1. Napsauta virtuaalikone aktiiviseksi ja valitse **Connect / Yhdistä **
Jos suojatun käynnistyksen jättää päälle, asennusmedia ei suostu käynnistymään
Jos suojatun käynnistyksen jättää päälle, asennusmedia ei suostu käynnistymään
  1. Aja Debianin asennusohjelma loppuu. Lisäohjeita voi lukea Debianin virallisesta asennusohjeesta.
Debianin asennusmedia käynnistyy
Debianin asennusmedia käynnistyy

Debianin asennusvaiheessa on kolme tärkeää asiaa, jotka on hyvä muuttaa oletusasetuksista:

  1. Anna virtuaalikoneelle sama nimi (esim. debian) kuin annoit Hyper-V:ssä virtuaalikoneelle.
  2. Anna verkkoaluenimeksi mshome.net.
  3. Valitse asennettaviksi ohjelmakokoelmiksi vain SSH server ja Vakiot järjestelmätyökalut.

Debian-asennuksessa ei välttämättä tarvitse ottaa mitään erityisasioita huomioon, mutta annan suositukseksi, että verkkoaluenimeksi määritellään mshome.net ja konenimeksi sama nimi, jota käytit Hyper-V:ssä. Nimeäminen vähentää myöhemmin hämmennystä, kun yrität ottaa isäntäkoneelta yhteyden virtuaalikoneeseen. Näihin voisi laittaa jotain muutakin, mutta Microsoft on jo päättänyt puolestasi, että isäntäkoneen puolella virtuaalikoneiden nimet ovat muotoa konenimi.mshome.net.

Vähennä myöhempää hämmennystä ja anna domainille nimi *mshome.net*
Vähennä myöhempää hämmennystä ja anna domainille nimi mshome.net

Halusin pitää virtuaalikoneeni riisuttuna, joten karsin asennusvaiheessa kaikki työpöytäympäristöön liittyvät ohjelmistovalinnat pois. Jätin jäljelle vain SSH-palvelun ja vakiot järjestelmätyökalut.

Jätin asennettaviksi ohjelmistokomponenteiksi etäkirjautumisen sallivan SSH-palvelun sekä perustoimintoja sisältävän komponentin
Jätin asennettaviksi ohjelmistokomponenteiksi etäkirjautumisen sallivan SSH-palvelun sekä perustoimintoja sisältävän komponentin

Yhdistä virtuaalikoneeseen SSH-yhteydellä

Avaa PowerShell ja aja komento

Test-NetConnection -Computer debian.mshome.net -Port 22
Virtuaalikone vastaa vain, jos tajuaa kutsua mshome.net -domainia
Virtuaalikone vastaa vain, jos tajuaa kutsua mshome.net -domainia

Jos näet tekstin PingSucceeded : False, tarkista, että virtuaalikone on päällä ja että virtuaalikoneen nimi on kirjoitettu oikein. Et pysty ottamaan suoraan yhteyttä pelkällä konenimellä, vaan Hyper-V vaatii rinnalle domain-nimen, joka on mshome.net.

Koneeseen voisi ottaa yhteyttä myös IP-osoitteella, mutta ongelmaksi muodostuu vaihtuva IP-osoite, jota ei voi ennustaa etukäteen. On paljon helpompaa hyödyntää osoitetta konenimi.mshome.net.

Suorita seuraavaksi PowerShellilla komento ssh kayttanimi@debian.mshome.net, jolla pääset linux-koneen terminaaliin kiinni.

Microsoftin PowerShellillä voi kirjautua ssh-yhteydellä Linux-koneelle
Microsoftin PowerShellillä voi kirjautua ssh-yhteydellä Linux-koneelle

Asennuksen jälkeiset säädöt

Tietoturvan parantamiseksi teemme vielä muutaman lisämuutoksen Debianin palomuuriin ja SSH-palvelimen asetuksiin.

  1. Avaa editorilla /etc/ssh/sshd_config -tiedosto ja lisää seuraavat rivit, jotta SSH-kirjautuminen onnistuu vain IPv4-verkosta ja vain tietylle käyttäjälle:
AddressFamily inet
AllowUser kayttajanimi
  1. Avaa editorilla /etc/nftables.conf ja tiukenna palomuuria. Alla oleva esimerkki estää ulkoa tulevan liikenteen ja avaa isäntäkoneelle SSH-portin.
#!/usr/sbin/nft -f

flush ruleset

table inet filter {
        chain input {
                type filter hook input priority 0; policy drop;

                # accept any localhost traffic
                iif lo accept

                # accept traffic originated from us
                ct state established,related accept

                # accept neighbour discovery otherwise IPv6 connectivity breaks
                icmpv6 type { nd-neighbor-solicit, nd-router-advert, nd-neighbor-advert } accept

                # Allow SSH on port TCP/22
                # Hyper V ip range:     172.17.0.0 - 172.31.255.255
                #                       192.168.0.0 - 192.168.255.255
                ip saddr 172.17.0.0/11 tcp dport { 22 } accept
        }
        chain forward {
                # Drop everything (assumes this device is not a router)
                type filter hook forward priority 0; policy drop;
        }
}

Yllä oleva palomuurisääntö on mukautettu nftables-ohjelman wikisivulla olevista esimerkkisäännöistä Simple ruleset for a workstation ja Simple ruleset for a server.

Käyttö

Voit käynnistää virtuaalikoneen suoraan PowerShellista, jos et halua käyttää Hyper-V Managerin graafista käyttöliittymää. Aja silloin PowerShell-komento:

Start-Vm -Name debian

Kun haluat siirtää tiedostoja virtuaalikoneelle, suorita komento scp

# PowerShell
scp .\siirto.txt mikko@debian.mshome.net:.

tai siirrä tiedostot erillisellä WinSCP -ohjelmalla.

WinSCP:llä tiedostoja voi siirtää graafisesta käyttöliittymästä
WinSCP:llä tiedostoja voi siirtää graafisesta käyttöliittymästä
Mikko Harhanen
Mikko Harhanen
Business Intelligence -konsultti

Kauppatieteiden maisteri, liiketoiminnan analyytikko.