Google Cloud Platform IaaS – Ubuntu asennus

Compute Engine Virtuaali- koneen asennus

Googlen Cloud Platform löytyy sivulta https://console.cloud.google.com/, loin tälle sivulle käyttäjä, joka sai 300$ vuodeksi käyttöön Google Cloudiin eli voin asentaa ilmaisia palvelimia näillä crediteillä.

Sivun sivupalkista löytyy kohta Compute Engine –> VM Instances kuva alla.

Seuraavaksi paina pienestä sinisestä napista, jossa lukee “Create”, kuva alla.

Bash komentokehote kirjautuminen

Jos haluat käyttää Googlen tarjoamaa Web terminaalia SSH avainta ei itse tarvitse luoda Bash komentokehote kirjautuminen kohta voidaa skipata tässä tapauksessa kohtaan “VM instance asennus”.

Seuraavaksi tarvitaan SSH julkinen avain, joka luodaan Linuxissa komennolla “ssh-keygen” jos et vaihtanut alkuperäistä kansio sijaintia avain löytyy komennolla “cat /home/USERNAME/.ssh/id_rsa.pub“.

Julkinen avain löytyy alla olevassa muodossa ja sitä tarvitaan palvelimelle sisään pääsyyn salaisen avaimen avulla.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCeU2g+Iy4QCxweO+RGaueMtiZ    +Q56sBBZpMm9axItkcw0J9mU17D0pkkzFjkuKptWVEdNlbRpYTzK8MmP27tAoyXvgEaZoOcGq0JpycleLW8MsPJsxG2NL92PPutY137Njniba/CpnAMUMW3YX4mM2vh4qnuHRpaMeDCJu3T0QsALf2eC48IQW7OdGX3ww80tyZCbcADDeshOjfez30UoAPbzEGcBYfMmiVeYunElpFljy9Ek6gkaVpyXdvLlaiLQ6kaXsOUrbfpAXdnUewgHVCRCvSc0feIxmNWEK519osF+UqOsI7iqsBc +alS2GmrUbXt8HEBSuK6nWFLQXmOCl jonih@dunttus

Google Cloud luo käyttäjän jonih palvelimen pystytys vaiheessa, jos SSH avainta on käytetty VM instancen luomisessa.

VM instance asennus

Sitten menin takaisin kesken jääneeseen Cloud Compute Engine virtuaali- koneen luontiin, selitykset ja kuva alla.

Name – palvelimelle tuleva nimi.

Region – voit valita mihin maahan palvelin asennettaan.

Machine configuration – palvelimelle tuleva rauta: Prosessori ja flash muisti.

Boot disk – luotava käyttöjärjestelmä.

Firewall – jättääkö palomuuri reirityksen portiin 80 ja 443.

SSH Keys – tähän kopioidaan oma julkinen avain.

Valittuasi Alhaalta “Create” palvelin luodaan.

Google Web Commandline

Painamalla sinisellä merkitystä kohdasta Connect: SSH avautuu Googlen Web terminaali valmiiksi tehdyssä Virtuaali- palvelimessa. Kuva alla.

Bash terminaali kirjautumine

Jos teit kohdan Bash terminaali palvelimelesi pääset SSH avainten, käyttäjän julkisessa avaimessa esimerkki oli “jonih” ja External IPn avulla komenolla “ssh user@ExternalIP“.

Ubuntun configurointi

Alku komennot, jotka päivittää Ubuntun:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

Palomuuri UFW päälle ja reikä SSH:lle:

sudo apt-get install ufw
sudo ufw allow 22/tcp
sudo ufw enable
sudo systemctl restart ufw
sudo ufw status

Root salasanan vaihtaminen:

sudo passwd
passwd

Root käyttäjälle kirjautuminen:

su
whoami

Uuden käyttäjän luonti. Muista hyvä salasana, koska palvelin on julkisessa pilvipalvelussa, jota kuka tahansa voi käydä kokeilemassa:

adduser hakala
adduser hakala adm
adduser hakala sudo

Google Cloudin SSH asetuksissa ei ole salasana kirjautumista, joten laitoin sen päälle. laitoin samalla Root käyttäjä kirjautumisen SSHlla pois päältä. Tiedostossa sshd_config PermitRootLogin prohibit-password –> PermitRootLogin no ja PasswordAuthentication no –> PasswordAuthentication yes tallensin ja lopetin.

cd /etc/ssh
cat sshd_config
sudoedit sshd_config
sudo systemctl restart ssh
exit

Kirjauduin uudestaan käyttäjällä hakala käyttäen salasanaa:

ssh hakala@ExternalIP

Google cloud teki ubuntu käyttäjän poistin sen ja käyttäjän kansion:

sudo userdel ubuntu
sudo rm -r /home/ubuntu

Poistan myös alkuperäisen käyttäjän ja käyttäjän kansion:

sudo userdel jonih
sudo rm -r /home/jonih

Kirjauduin viellä ulos ja laitoin julkisen ja salaisen avaimen kirjautumisen päälle komennolla:

ssh-copy-id hakala@ExternalIP

Lukitsin vielä lopuksi root käyttäjän komennolla:

sudo usermod --lock root

Budjetti hälytykset

Viimeistään ensimmäisen palvelin asennuksen jälkeen kannattaa ottaa käyttöön budhetti hälytykset kohdasta “Billing” –> Budgets & Alerts.

Hälytyksen nimi kannattaa olla tunnistettavassa muodossa, että muistaa mitä se tarkoittaa. Valitsin tähän kaikkien projektien ja tuotteiden yhteisen hinta hälytyksen eli kaikki yhteen laskettuna ei saa ylittää 15€ kk.

Valitsin budjetti tyypistä määritetyn määrän eli 15€ ja otin myös budjetin käyttöön ilmaisiin greditteihin valitsemalla “Include credits in cost”.

Porrastetussa hälytys mallissa saan hälytyksen kun budjetista on käytetty 50% 90% ja 100%.

Huom teksti “Setting a budget does not cap resourse or API consumption” eli budjetti ei itsestään vaikka sammuta cloudista virtuaali koneita jos budjetti ylittyy.

Web palvelin asennus

Apache asennus

Ensimmäisenä annan Ubuntulle versio tiedot komennolla “sudo apt-get update“. Sitten asensin Apache2 web palvelun komennolla “sudo apt-get install apache2“. Sitten pitää jotenkin todeta, että apache2 paketti asentui eli latasin Curlin komennolla “sudo apt-get install curl” ja avasin Apachen testi sivun Curlilla teksti muodossa komennolla “curl localhost“, joka avasi Apachen testi sivun. Korvasin Apachen testi sivun HelloWorld sivulla komennolla “echo HelloWorld! | sudo tee /var/www/html/index.html“. Nyt Apache avaa localhostista sivun, jossa lukee HelloWorld!.

Käyttäjä kansiot käyttöön Apachessa

Alotin komennolla “sudo a2enmod userdir“, jolla saadaan käyttäjien koti kansioon /home/user/public_html tehtyä kotisivut tekemällä sinne index.html tiedosto. Komento muuttaa Apachen asetuksia eli uudelleenkäynnistin Apachen, jotta uudet asetukset tulevat voimaan komennolla “sudo systemctl restart apache2“.

Tein skel kansioon eli uusille käyttäjille koti hakemistoon tuleville tiedostoille uuden kansion publi_html komennolla “sudo mkdir /etc/skel/public_html” ja komennolla “sudoedit index.html” tein kansioon index.html tiedoston, johon kijoitin Hello World. Seuraavaksi loin uuden käyttäjän, jolle kotisivut luodaan komennolla “sudo adduser dunttus” käytin hyvää salasanaa koska Cloudissa on SSH kirjautuminen päällä ja kuka vaan voi käydä kokeilemassa kirjautumista. Sitten laitoin käyttäjälle sudo oikeudet komennolla “sudo adduser dunttus sudo“, joka lisää käyttäjän sudo oikeuksien asetuksiin. Tarkastin vielä, että skel on luonut käyttäjälle public_html kansion ja index.html tiedoston Curlilla komennolla “curl localhost/~dunttus/“. Curl avasi sivun, jossa luki Hello World eli toimii.

Domain nimi osoitteeseen

Omistan domain nimen dunttus.com, jota säilytän sivulla namecheap.com eli tarkoituksena olisi yhditää domain nimi IP osoiteeseen. Kirjauduin NameCheapin palveluun josta valistin Dashboard ja dunttus.com kohdalta manage kuva alla.

Seuraavaksi menin Advanced DNS –> ADD NEW RECORD, johon tein A Recordit @ ja www, johon laitoin Google Cloudiin tekemäni Ubuntun ExternalIP osoitteen lopuksi tallensin painamalla SAVE ALL CHANGES. Kuva alla. A Recordilla @ voidaan esimerkiksi tulevaisuudessa kirjautua palvelimelle domain nimelle esim. komennolla “ssh user@dunttus.com” ja A Record www vie http://www.dunttus.com osoitteen oikean IP osoitteen Web palveluun.

Domain nimen siirrossa toiseen osoitteeseen voi viedä jonkin aikaa eli menin tässä vaiheessa valmistelemaan tulevaa sivua.

Virtual Hosting Ubuntulla

Virtualhostin tarkoituksena on ohjata kaikki dunttus.com liikenne käyttäjän dunttus kansioon /home/dunttus/public_hml/index.html ja ExternalIP liikenne menee Apachen testisivuun HelloWorld! eli Virtual Hostin hyötynä on saada monta eri Domain nimeä saman IP osoitteen alle.

Ensin kirjauduin käyttäjällä dunttus komennolla “su dunttus“. Avasin Apachelle portin 80 UFW palomuurista komennolla “sudo ufw allow 80/tcp” ja uudelleen käynnistin UFWn komennola “sudo systemctl restart ufw“. Kokeilin samalla Domain ohjauksen IP osoitteelle eli avasin sivun Google Cromella osoitteesta dunttus.com jonka pitäisi nyt jo ohjata sivu palvelimelleni osoitteeseen http://35.228.191.122/. Kyllä tämä toimi oletetusti ja avasi Apachen testi sivun /var/www/html/index.html sivun, kuva alla.

Seuraavaksi ohjaamme palvelimen puolella dunttus.com liikenteen käyttäjä kansioon /home/dunttus/public_html/index.html Navigoin Apachen Virtualhost asetuksien tiedosto hakemistoon /etc/apache2/sites-available ja loin tiedoston dunttus.com.conf komennolla “sudoedit dunttus.com.conf“. Tiedoston sisältö alla.

#/etc/apache2/sites-enabled/dunttus.com.conf
<VirtualHost *:80>
  ServerName dunttus.com
  ServerAlias dunttus.com
  DocumentRoot /home/dunttus/public_html/
  <Directory /home/dunttus/public_html/>
    Require all granted
  </Directory>
</VirtualHost>

Config tiedosto viedään sites-enabled kansioon komennolla “sudo a2ensite dunttus.com.conf” uudelleen käynnistin Apache2 palvelun komennolla “sudo systemctl restart apache2“, jotta asetukset tulevat voimaan. Kirjoitin testi tekstiä vielä dunttus käyttäjän index.html sivuun komennolla “echo “testiteksti dunttus.com” | tee /home/dunttus/public_html/index.html” ja avasin Google Cromella sivun dunttus.com joka avasi nyt käyttäjän kansion /home/dunttus/public_html/index.html tiedoston. Kuva alla.

Eli virtual hosting toimii nyt ja reitittää kaikki dunttus.com domainille tulevat yhteydet /home/dunttus/public_html/index.html ja External IP:llä tulevat apachen testisivuun /var/www/html/index.html.

Githubista oman sivun lataaminen dunttus.com sivulle

Lataan omalta Github sivultani oman portfolio sivun Ubuntu palvelimelle komennolla “git clone https://github.com/Dunttus/portfolio.git“, /home/dunttus kansioon.

Vaihdoin tiedostojen käyttö oikeuksia kommennoilla

sudo chmod go-rwx index.html
sudo chmod go-rwx komentoja.txt
sudo chmod go-rwx sanalista.tx
sudo chmod -R go-rwx css/
sudo chmod -R go-rwx img/

Chmod GO tarkoittaa Group ja Other, joilta otin RWX oikeudet pois miinus “-” merkillä eli Read, Write ja Execute. Kansioihin tarvitsee ajamis oikeuden muuten niitä ei voi avata netti-sivulla ja kansiossa olevat tiedostot tarvitsee luku oikeuden. Ulkoisille käyttäjille kannattaa antaa minimaaliset oikeudet, jotka näkyy alla.

sudo chmod go+r index.html
sudo chmod go+r komentoja.txt
sudo chmod go+r sanalista.tx
sudo chmod -R go+r css/
sudo chmod -R go+r img/
sudo chmod go+x css/
sudo chmod go+x img/
dunttus@dunttus-web:~/home/joni/portfolio/$ ls -la
total 68
drwxr-xr-x 4 dunttus dunttus  4096 Nov 10 13:11 .
drwxr-xr-x 5 dunttus dunttus  4096 Nov 10 12:57 ..
drwx--xr-x 2 dunttus dunttus  4096 Nov 10 12:57 css
drwx--xr-x 2 dunttus dunttus  4096 Nov 10 12:57 img
-rwxr--r-- 1 dunttus dunttus  1831 Nov 10 13:11 index.html
-rwxr--r-- 1 dunttus dunttus 44086 Nov 10 12:57 komentoja.txt
-rwxr--r-- 1 dunttus dunttus  2618 Nov 10 12:57 sanalista.txt

Kopioin kaikki tarvittavat tiedostot kansiosta portfolio kansiosta public_html kansioon komenoilla -rp lippu tuo rekursiivisesti myös oikeudet.

cp -rp index.html /home/dunttus/public_html/
cp -rp img /home/dunttus/public_html/
cp -rp css /home/dunttus/public_html/
cp -rp komentoja.txt /home/dunttus/public_html/
cp -rp sanalista.txt /home/dunttus/public_html/

Copy komennon flagit -r kopioi hakemistot rekursiivisesti ja -p säilyttää samat oikeudet ja tiedoston omistajan.

Kokeilin vielä lopuksi, että kaikki toimi oikealla tavalla netti sivulla ja kyllä toimii. Sivu löytyy nyt osoiteesta http://dunttus.com

Proxy yhteys palvelimen sisäverkkoon Windows 10:llä

Ensin avasin komento kehotteen Windsilla, painamalla Windows+R näppäimiä ja kirjoittamalla cmd. Palvelimelle päästään kirjautumaan Proxy tunnelilla komennolla “ssh -D 8181 user@ExternalIP“. Proxy tunneli pitää liittää vielä Windowsin omiin proxy asetuksiin painamalla Windows+R näppäimiä ja kirjoittamalla control panel. Ohjauspaneelissa navigoidaan Ohjauspaneeli –> Verkko ja Internet –> Hallitse Selaimen Lisäosia –> Yhteydet –> Lähiverkon asetukset. Verkon asetuksista kuvat alla.

Ensin valitaan lähiverkon asetukset.

Ruksitetaan Käytä välityspalvelinta lähiverkossa päälle ja mennään kohtaan Lisätiedot.

Proxylle valitaan Socks localhost:8181, joka reitittää Proxyn paikallis verkon portin 8181 kautta.

KESKEN Proxy yhteys palvelimen sisäverkkoon Linux Ubuntulla

Ensin avataan Linuxin terminaali eli Bash ja komennolla “ssh -D 8181 user@ExternalIP”. Jätä ikkuna auki, koska se toimii proxy tunnelin välittäjänä. Mene Linuxin verkko asetuksiin ja etsi sieltä Proxy asetukset.

Vaihda Proxy asetukset reitittämän portiin 8181 localhostin kautta liikenne jotta saadaan SSH-tunneli pilvipalveluun.

Lisätietoja Proxystä

Tein tässä esimerkissä Google Cloud palvelimeeni Proxy tunnelin, joka reitittää verkko yhteyden selaimilla sen kautta eli pääsen oman pilvipalvelun sisäverkkoon.

Proxyn toimivuuden voi kokeilla Crome selaimella osoiteessa https://www.whatismyip.com/. Ulkoverkon osoitteeksi whatismyip sivu ilmoitti Google Cloud palvelimeni osoitteen vaikka käytin kotiverkosta selainta eli Proxy tunneli toimii. Nyt selaamani sivut näkevät, että Google Cloud palvelimeltani otetaan yhteys näin voidaan salata oma julkinen IP osoite. Nyt jos palomuurin takana olisi palveluita porteissa, jotka ovat kiinni ulkoverkkoon pääsen myös niihin käsiksi, koska olen sisäverkossa.

Googlen IP näyttää palvelimen osoiteen tulevan USA:sta vaikka itse palvelin sijaitsee Suomessa. En ole löytänyt tähän mitään kunnon ratkaisua stackoverflow sivulla lisää tästä: https://stackoverflow.com/questions/51801691/created-gce-in-europe-region-but-ip-address-shows-its-in-us

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s