Her opsætter vi en SSH-nøgler til at få adgang til vores hjemmeserver.
Vi gør det på en måde så du senere kan tilføje flere SSH-nøgler til andre tjenester - f.eks. Github
SSH keys fungerer ved at man har en privat og en offentlig nøglefil (public key). Den private ligger på din computer, og den offentlige på den computer du har SSH adgang til.
Du bliver som bruger verificeret ved at de to nøgler passer sammen.
Det smarte ved systemet er, at din offentlige nøgle kan ligge mange steder, men din private nøgle ligger kun på dine enheder
Hvad skal der gøres
ssh-keygen -t rsa -f ~/.ssh/server-key
Generating public/private rsa key pair.
Herefter bliver du sat overfor et valg
Enter passphrase (empty for no passphrase):Her har du mulighed for at indtaste et kordeord, som skal anvendes i hver SSH-session. Kodeordet skal ses som en ekstra sikkerhed hvis nogen får fat i din private nøgle.
Gentag ovenstående.
Enter passphrase (empty for no passphrase): Enter same passphrase again:Herefter oprettes nøglen
Your identification has been saved in /home/tj/.ssh/server-key Your public key has been saved in /home/tj/.ssh/server-key.pub The key fingerprint is: SHA256:ui6kjLjISee1NZT/GF1HwfYYLc337UPHbcN5wMThGjk tj@desktop The key's randomart image is: +---[RSA 3072]----+ | ++* | | o*o*| | E +BB| | . +o=X| | oS ...++| | . ... . . ...| |.+ + ..o o . .| |* * o o.. + | |o+ . +o . . | +----[SHA256]-----+Nøglerne er oprettet.
For at serveren kan verificere brugen skal den have den offentlig nøgle, som har endelsen pub. Den hedder i vores tilfælde server-key.pub
Den kopieres i dette tilfælde over med kommandoen :
ssh-copy-id -i ~/.ssh/server-key.pub tj@192.168.87.10
Hertil svarer serveren
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys tj@192.168.87.10's password:Indtast din brugers adgangskode på serveren
Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'tj@192.168.87.10'" and check to make sure that only the key(s) you wanted were added. tj@desktop:~$Opret filen ~/.ssh/config og indsæt følgende:
Host server HostName 192.168.87.10 User tj Port 22 IdentityFile ~/.ssh/server-keyHerefter kan du anvende ssh server i stedet for ssh server
Login på din server ved hjælp af SSH
ssh server
Har du indtastet en passphrase, kommer der et vindue op hvor du skal indtaste din passphrase du lavede i starten
Herefter er du logget ind på din server
Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-64-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Mon 25 Jan 2021 03:32:47 PM UTC System load: 0.0 Processes: 141 Usage of /: 24.6% of 29.40GB Users logged in: 0 Memory usage: 8% IPv4 address for docker0: 172.17.0.1 Swap usage: 0% IPv4 address for enp0s3: 192.168.87.11 0 updates can be installed immediately. 0 of these updates are security updates. Web console: https://server1:9090/ or https://192.168.87.11:9090/ Last login: Mon Jan 25 07:57:27 2021 from 192.168.87.131 tj@server1:~$Log af (skriv exit
)og tjek at du kan logge på igen uden at skrive password
Du kan sætte din server op til, at der kun er SSH adgang ved hjælp af SSH-nøgler. Gør følgende på serveren.
Vær opmærksom på at SSH herefter kun bruges fra computere der har din nøglefil
Åbn filen /etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
Find linien (Brug Ctrl+w til at søge):
#PasswordAuthentication yes... fjern # og ændr yes til no.
PasswordAuthentication noGem filen og genstart SSH
sudo systemctl restart ssh
Done!
Til at kopiere filer bruger man kommandoen scp (Secure CoPy). Kommandoen fungerer som følger:
scp [Kildefil] [Destinationsfil]
For at kopiere ~/testfil sin computer over i sin mappe på en SSH-server:
scp ~/testfil tj@192.168.87.10:/home/tj
Installer sshfs på din desktop.
sudo apt install sshfs -y
Opret en mappe i dit home som du kalder ssh_drev både på din workstation og SSH-serveren.
mkdir ~/ssh_drev
ssh tj@192.168.87.10 "mkdir ~/ssh_drev"
Nu kan vi montere mappen fra SSH-serveren ved hjælp af følgende kommando:
sshfs tj@192.168.87.10:ssh_drev ssh_drev
Kommandoen forudsætter at man står i sin personlige mappe på serveren
Hvis man har oprettet mapperne andre steder skal de have deres mappernes fulde sti.
Afmontering af drev
Drevet af monteres med umount:
umount ~/ssh_drev
Du sender kommandoer til serveren ved at tilføje den i anførselstegn efter normal login. Her beder jeg om at se indholdet af min hjemmemappe på serveren.
ssh tj@192.168.87.11 "ls -al"
tj@192.168.87.11's password:
total 32
drwxr-xr-x 4 tj tj 4096 Jan 19 13:44 .
drwxr-xr-x 3 root root 4096 Jan 19 13:28 ..
-rw------- 1 tj tj 919 Jan 27 15:28 .bash_history
-rw-r--r-- 1 tj tj 220 Feb 25 2020 .bash_logout
-rw-r--r-- 1 tj tj 3771 Feb 25 2020 .bashrc
drwx------ 2 tj tj 4096 Jan 19 13:29 .cache
-rw-r--r-- 1 tj tj 807 Feb 25 2020 .profile
drwxr-xr-x 3 tj tj 4096 Jan 19 13:43 snap
-rw-r--r-- 1 tj tj 0 Jan 19 13:30 .sudo_as_admin_successful
tj@desktop:~$
Læg mærke til at du stadig er på din egen pc selvom du får output fra SSH-serveren.
Du kan også udføre sudo kommandoer.
Som standard bruger SSH port 22. Du kan ændre portnummer hvis du ønsker det f.eks: til port 222. For at logge ind med et andet portnummer skal optionen -P [portnummer] anvendes, f.eks:
ssh -p 222 tj@192.168.87.10
Rediger filen /etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
Ændr #port 22 til port 222
Genstart SSH
sudo systemctl restart ssh
Konfigurer firewall
Da vi har ændret porten, skal vi have åbnet den nye - og lukket den gamle
Åbn ny port
sudo ufw allow 222/tcp
Fjern gammel regel
sudo ufw delete allow OpenSSH
Tjek at det er sat rigtigt op - altså at OpenSSH er fjernet og 222/tcp er der:
sudo ufw status
Status: active
To Action From
-- ------ ----
222/tcp ALLOW Anywhere
222/tcp (v6) ALLOW Anywhere (v6)
Genstart ufw
sudo ufw reload
Done!
For at få en egen velkomstbesked på serveren skal man gøre to ting:
sudo nano /etc/ssh/sshd_config
Udskift linien:
#Banner none
med
Banner /etc/issue.net
Ændr teksten i /etc/issue.net til den tekst du ønsker. f.eks:
*** Velkommen til min server (192.168.87.10/24) ***Herefter vil velkomsten se ud som herunder:
tj@server:~$ ssh tj@192.168.87.11 *** Velkommen til min server (192.168.87.10/24) *** tj@192.168.87.10's password:Du kan filtrere brugere på SSH-serveren på to måder, enten ved at tillade specifikke brugere, eller afvise specififikke brugere.
Rediger filen /etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
Tilføj linien Allowusers i bunden af filen og tilføj brugernavnene på de brugere der har adgang, f.eks:
Allowusers tj ab bc cdAlle andre brugere vil blive afvist.
Rediger filen /etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
Tilføj linien Denyusers i bunden af filen og tilføj brugernavnene på de brugere der ikke skal have adgang, f.eks:
Denyusers tj ab bc cdAlle andre brugere vil blive afvist.
Mere læsning: https://www.digitalocean.com/community/tutorials/how-to-use-sshfs-to-mount-remote-file-systems-over-ssh