SSH også kendt som Secure Shell

Denne gang skal vi snakke om SSH også kendt som Secure Shell, SSH er et program der gør det muligt for dig at forbinde til din Linux maskine over internettet og styre din Linux box via terminalen.
Jeg satte det op i går fordi jeg følte det var noget jeg manglede at lære i Linux og nu skriver jeg så denne guide så jeg kan huske det senere.
Bemærk: det er en fordel hvis du har en fast IP adresse da det gør det lettere at forbinde til din maskine.
Alt det vi skal lave foregår som sædvanligt i terminalen.
Først skal vi have en SSH server installeret så vi kan forbinde over SSH.
Det gør vi sådan her.
sudo apt-get install openssh-server
Nu skal vi lave nogle indstillinger for vores openssh server, configurations filen for openssh serveren ligger her.
/etc/ssh/sshd_config
Lad os lave en backup af filen så vi altid kan genskabe den hvis der går noget galt.
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
Nu skal vi lave nogle ændringer i den rigtige sshd_config fil.
sudo nano /etc/ssh/sshd_config
Find linjen #PasswordAuthentication yes
Du kan eventuelt bruge søge funktionen ctrl + w.
Fjern pound symbolet # og sæt den til nej så linjen bliver til:
PasswordAuthentication no
Nu skal du finde følgende linje og ændre den.
AllowTcpForwarding yes
Og slå den funktion fra, ændre linjen til:
AllowTcpForwarding no
Dernæst finder du:
X11Forwarding yes
Og ændre den til:
X11Forwarding no
Disse ting gøres for at dit system er mere sikkert, grafisk forwarding og TCP trafik forwarding så du essentielt kan surfe via din hjemme forbindelse kan være interessante features men det er ikke en god idé i følge Ubuntu.com hvor guiden kommer fra.
Enten ude af den fil eller i en anden terminal kør:
sudo ufw limit ssh
Dette sørger for at firewallen i systemet afviser hvis en angriber forsøger at logge ind for mange gange for hurtigt.
Beskrevet som 10 gange på 30 sekunder.
Nu skal vi tilbage i vores ssh configurations fil
sudo nano /etc/ssh/sshd_config
Find linjen LogLevel INFO
og ændre den til
LogLevel VERBOSE
Det er en mere detaljeret version af logning så som fejlede login forsøg.
Logfilen for ssh kan findes her:
/var/log/auth.log
For at vise et banner, en standard besked når du logger ind via ssh find linjen:

Banner /etc/issue.net

Og fjern kommenteringen så det kommer til at se sådan her ud
Banner /etc/issue.net
Du kan nu gå ind og skrive hvad der skal stå i det banner, for mig stod der bare Ubuntu og så et versions nummer du bestemmer selv hvad der skal stå.
Vi ændre den her:
sudo nano /etc/issue.net
Her er eksemplet fra Ubuntu.com


                        NOTICE TO USERS

This computer system is the private property of its owner, whether
individual, corporate or government. It is for authorized use only.
Users (authorized or unauthorized) have no explicit or implicit
expectation of privacy.

Any or all uses of this system and all files on this system may be
intercepted, monitored, recorded, copied, audited, inspected, and
disclosed to your employer, to authorized site, government, and law
enforcement personnel, as well as authorized officials of government
agencies, both domestic and foreign.

By using this system, the user consents to such interception, monitoring,
recording, copying, auditing, inspection, and disclosure at the
discretion of such personnel or officials. Unauthorized or improper use
of this system may result in civil and criminal penalties and
administrative or disciplinary action, as appropriate. By continuing to
use this system you indicate your awareness of and consent to these terms
and conditions of use. LOG OFF IMMEDIATELY if you do not agree to the
conditions stated in this warning.


Hvis du vil lave en test for dig selv om det virker kan du gøre sådan her men på nuværende tidspunkt vil det ikke virke da vi har slået almindelig password authentication fra.
ssh -v localhost
I stedet ønsker vi at sætte SSH Keys op til formålet så lad os gøre det nu.
Hvis du ikke allerede har en .ssh mappe i din home mappe så skal du lave en, du kan se andet steds på bloggen hvordan man laver mapper i Linux.
Sæt din .ssh mappes adgangs niveau til 700 sådan her:
sudo chmod 700 ~/.ssh
Du skal sikre dig rigtige rettigheder og alle nødvendige directories er til stede.
Jeg blev nød til at gøre følgende for at få det til at virke:
sudo chmod go-w ~/
sudo chmod 700 ~/.ssh
sudo chmod 600 ~/.ssh/authorized_keys
Hvis filen authorized_keys ikke findes så lav den inden du kører ovenstående kommando du kan også finde en guide til oprettelse af filer i bloggen. Du kan bruge en teksteditor som nano eller en specifik kommando jeg har beskrevet andet steds.
Herefter kører du ssh key generatoren der laver en SSH key til dig.
Kommandoen til det er:
ssh-keygen -t rsa -b 4096
Du vil blive mødt af en række spørgsmål her er spørgsmålene og svarene.
Enter file in which to save the key (/home/username/.ssh/id_rsa):
Du kan bare klikke enter hvis det er hvor du vil have din key, jeg har min key på en USB pen. Som standard skal din key ligge i den folder, i følge askubuntu.com kan man godt angive hvor ens fil ligger, se nedenunder, men det kommando argument har jeg ikke selv testet endnu.
I følge askubuntu.com kan du godt angive hvor din key er når du forbinder til en ssh server, det må jeg lige teste når jeg kommer hjem, så jeg skriver jeg her om det virkede eller ej, indtil videre er kommandoen:
ssh user@server -i /path/to/mykey
Nu vil du blive bedt om en passphrase, passphrase er bare et ord for et langt kodeord. “Password sætning” essentielt i stedet for “Password ord”
Gentag dit password/passphrase og så laver den filen til dig.
Først skal vi have lagt vores public ssh key ind i systemet så vi kan oprette en forbindelse til den.
Dette gøres således:
cat /path/to/your/publickey/id_rsa.pub >> authorized_keys
Kan du huske vi lavede den fil tidligere? den ligger i ~/.ssh/authorized_keys
Lad os genstarte ssh så vores ændringer træder i kraft.
sudo restart ssh
Hvis du får fejlen Unable to connect to Upstart skal du gøre følgende i stedet:
sudo systemctl restart ssh
Så skulle det gerne virke lad os prøve:
ssh -v localhost
Hvis det virker, sshe ind i din egen maskine fra din egen maskine så begynder det at blive interessant.
Nu skal vi have SSH til at virke udefra. Du skal ind i din router.
Find din interne IP, i windows ville det være ipconfig via cmd, i linux ville det være ifconfig i terminalen.
Find din default gateway det er din router, tast den ind i din browser, log ind og sæt port forward til din interne ip til port 22 (SSH Porten).
For at lave en normal forbindelse uanset hvor du er gør følgende:
ssh user@your-public-ip
Eller hvis du selv vil specificere hvor din private SSH key var så er det.
ssh user@your-public-ip -i /path/to/mykey
Den vil bede om dit password og så er du kørende.