SSH en SCP: veilig verbinding maken met andere computers

SCP (Secure CoPy)

SCP is een protocol om bestanden via het netwerk tussen twee computers uit te wisselen, bijvoorbeeld tussen je eigen computer en cage. Zoals secure al aangeeft, gebeurt deze uitwisseling versleuteld zodat snode afluisteraars niets kunnen ontcijferen.

Belangrijk om op te merken is dat cage dit protocol ondersteunt, maar wel op poort 2222 in plaats van de standaard 22 (om veiligheidsredenen). Daarom zal je hieronder af en toe expliciet ergens "2222" zien verschijnen. Binnen de Galglaan zelf werkt de standaard poort wel, en dan kan je veelal de poort-instelling leeg laten.

Er zijn een aantal mogelijkheden om van SCP gebruik te maken:

Windows: Cyberduck

Hiermee zou het mogelijk moeten zijn om de bestanden op cage in de File Explorer te zien te krijgen. (Nog niet getest).

Windows: WinSCP

Bij het opstarten krijg je iets dergelijks te zien; wil je vanaf thuis verbinding maken met cage, vul dan bij Port number de waarde 2222 in:

Het hoofdscherm bestaat uit een overzicht van de bestanden op je eigen computer links en je bestanden op cage rechts:

Je kunt bestanden (of hele mappen) van de ene kant naar de andere kant overkopiëren. Ook dubbelklikken op een cage-bestand werkt meestal (in de achtergrond zal WinSCP het bestand ergens op je eigen computer kopieren en die kopie openen; bij wijzigingen kopieert WinSCP alles zelf netjes terug zodat het lijkt alsof je rechtstreeks het cage-bestand aan het bewerken bent).

Mac: Cyberduck

Hiermee zou het mogelijk moeten zijn om de bestanden op cage in de Finder te zien te krijgen. (Nog niet getest).

Mac: Fugu

Bij het opstarten krijg je iets dergelijks te zien; wil je vanaf thuis verbinding maken met cage, vul dan bij Port number de waarde 2222 in:

Vanop de commandoregel

Voor de liefhebbers. Voorbeeldje:
scp -P 2222 ergens/op/mijn_computer/file.txt username@cage.ugent.be:ergens/op/cage/
zorgt ervoor dat het bestand file.txt naar cage wordt overgekopieerd.

Het hoofdscherm bestaat uit een overzicht van de bestanden op je eigen computer links en je bestanden op cage rechts; je kunt bestanden (of hele mappen) van de ene kant naar de andere kant slepen. Je kunt ook slepen tussen het Fugu-vensters en Finder-vensters.

SSH (Secure SHell)

SSH is een soortgelijk protocol om op een veilige manier in te loggen op een andere computer. Je kunt SSH bijvoorbeeld gebruiken om vanaf thuis in te loggen op cage en dan het pine commando te geven om zo je mail te lezen.

Ook hier geldt de opmerking dat verbindingen van buiten de Galglaan poort 2222 moeten gebruiken (in plaats van de standaardpoort 22) en ook hier zijn er een aantal mogelijkheden:

Applet

Bruikbaar in de meeste webbrowsers. Handig omdat je niets hoeft te installeren.

Windows: PuTTY

Bij host name vul je cage.ugent.be in, en als je van buiten de Galglaan verbinding maakt, moet je bij port ook nog 2222 invullen.

Mac: terminal

Gebruik het Terminal hulpprogramma om een commandoregel te bekomen.

Commandoregel

Voorbeeld:
ssh -p 2222 gvernaev@cage.ugent.be

rsync

Om poort 2222 te gebruiken, geef je de -e optie:
rsync -e "ssh -p 2222" gvernaev@cage.ugent.be:geheim/samenzweringen/ ~/Desktop/ssst

Inloggen met een key in plaats van met een wachtwoord

Wachtwoorden kunnen geraden worden als een aanvaller maar lang genoeg probeert. Daarom is het veiliger een key te gebruiken, die bijna onmogelijk kunnen "geraden" worden.

Je kan de key beveiligen met een extra wachtwoord (in SSH-jargon passphrase genoemd) maar ook zonder wachtwoord is de verbinding volledig veilig. De passphrase is enkel nuttig in scenario's waar de bestanden met de key in verkeerde handen zouden kunnen vallen (bijvoorbeeld als je computer gerecycleerd wordt door onscrupuleuze instanties).

Een ssh key aanmaken

Er worden twee bestanden aangemaakt: een met de private sleutel en een met de publieke (die laatste meestal in een bestand waarvan de naam op .pub eindigt).

Een ssh key aanmaken op Mac

Ga in de Finder naar de Utilities/Hulpprogramma's folder (of duw Shift+Command+U) en dubbelklik op Terminal. Typ dan
ssh-keygen
Je kunt dan opgeven in welke bestandsnaam de key bewaard mag worden (duw Enter om het voorstel te aanvaarden) en de passphrase je wil gebruiken (je kan een wachtwoord bedenken, maar je mag dit ook gerust leeg laten, dus duw Enter om dit leeg te laten).

Noteer eventueel in welk bestanden de key bewaard wordt (bijvoorbeeld als je Fugu gebruikt zal je dit verderop even nodig hebben).

Daarna kan je de terminal afsluiten.

Een ssh key aanmaken op Linux

Zie de uitleg voor de Mac, enkel de manier om een terminal te openen zal versschillen.

Een ssh key aanmaken op Windows

Download PuTTygen.exe en start het. In het Key menu bovenaan: kies voor SSH-2 RSA Key (dit staat waarschijnlijk al zo ingesteld). Op het hoofdscherm bij Parameters kies RSA (dit staat waarschijnlijk al zo), in Nuber of bits kies 4096 (standaard staat er 2048 maar dat is tegenwoordig wat weinig). Druk dan bij Actions in het midden van het scherm op Generate. Er verschijnt een vooruitgansbalk; beweeg de muis willekeurig heen en weer om de key aan te maken. Kopieer dan de inhoud van Public key for pasting into OpenSSH en plak het in een bestand (bv met Notepad). Let op: kopieer de volledige tekst, inclusief "ssh-rsa" aan het begin. Bewaar de file als "sshkey.pub" of iets dergelijks. Dan kan je eventueel een Key passphrase en Confirm passphrase invullen, maar dit mag je ook leeg laten. Kies Save private om de private key file te bewaren (je zal de lokatie en naam van dat bestand nodig hebben om het bijvoorbeeld in Cyberduck te kunnen selecteren).

De SSH key activeren op de server

De publieke key moet op de server staan (de private key is voor de client). Als je al kunt inloggen op de server dan kan je een van de volgende manieren gebruiken. Zo nee dan is het een kip-en-ei situatie en in dat geval bezorg je de inhoud van de publieke key aan de systeembeheerder die het nodige zal regelen. Zo'n key ziet er uit als één lange lijn tekst van de vorm
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA3FhCAXTP6Yc0Ing2msDi8RjT8exqZvnI3+Q18LZ...
of
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHL1P8Z2X8aiFAMNhBs9zdA0WHDiCw3SNSDSU7TVR8CI...
(als je -----BEGIN RSA PRIVATE KEY----- ziet staan in het bestand dan heb je per ongeluk de private key te pakken en die mag niet op de server staan!).

Kan je wel al inloggen op de server, dan kan je in de terminal

ssh-copy-id username@cage.ugent.be
proberen. Is ssh-copy-id niet geïnstalleerd op je systeem dan kan je in de terminal kan de volgende one-liner gebruiken:
cat ~/.ssh/id_ed25519.pub | ssh username@cage.ugent.be "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
waarbij je id_ed25519.pub door de bestandsnaam van je publieke key moet vervangen en username door je loginnaam op de server.

Als je deze tools niet lokaal geinstalleerd hebt dan kan je ook manueel in het bestand .ssh/authorized_keys een regel toevoegt met daarin de key (dus een regel van de vorm ssh-rsa AAAAB3N...).

De SSH key activeren op de client

Command line tools

De meeste command line tools zoals ssh en scp kijken vanzelf in de juiste directory om de key te vinden en je moet dus niets doen.

Cyberduck

In het Bookmark of Connection venster kan je bij SSH Private key de private key (meestal ergens in je .ssh directory) kiezen.

Fugu

Klik de Advanced SFTP options open en vul bij Additional SSH options het volgende in:
-oIdentityFile=/Users/loginnaam/.ssh/id_ed25519
waarbij /Users/loginnaam/.ssh/id_ed25519 het bestand is waar ssh-keygen de private key heeft bewaard.

SSH kijkt vanzelf in een aantal standaard bestandsnamen (zoals /Users/loginnaam/.ssh/id_ed25519 dus het is goed mogelijk dat alles werkt zonder dat je deze extra configuratie moet doen.)