SSH

Translation(s): Deutsch – English – Français – Italiano – Español – Português Brasileiro

ToDo: merge (and translate) this page and the french one (more complete)

Introduction

SSH staat voor Secure Shell en is a protocol for secure remote login and other secure network services over an insecure network1. Zie Wikipedia-Secure Shell voor meer algemene informatie en SSH, lsh-client of dropbear voor de SSH software implementaties waarvan OpenSSH de meest populaire en meest gebruikte is2. SSH vervangt de niet-versleutelde telnet, rlogin en rsh en voegt vele functies.

in dit document zullen we de OpenSSH command suite gebruiken, er zal ook worden aangenomen dat de volgende twee variabelen zijn gedefinieerd:

remote_host=<the remote computer>remote_user=<your user name on $remote_host>

dus, als je de onderstaande recepten wilt gebruiken, Stel deze variabelen eerst in op de naam van de externe computer en de gebruikersnaam op die externe computer. Dan knippen en plakken van de onderstaande commando ‘ s moet werken. remote_host kan ook een IP-adres zijn.

installatie

installatie van de client

normaal gesproken wordt de client standaard geïnstalleerd. Indien dit niet volstaat om te draaien als root:

apt install openssh-client

de Installatie van de server

De server maakt het mogelijk om op afstand verbinding maken en wordt geïnstalleerd door het uitvoeren als root:

apt install openssh-server

Configuratie bestanden

De configuratie bestanden worden in de map /etc/ssh :

  • ssh_config : client configuratie bestand

  • sshd_config : server configuratie bestand

daarnaast bevat deze map het private/publieke sleutel paar identificatie van uw gastheer :

  • ssh_host_dsa_key
  • ssh_host_dsa_key.pub
  • ssh_host_rsa_key
  • ssh_host_rsa_key.pub

sinds OpenSSH 5.73 is een nieuw privé / openbaar sleutelpaar beschikbaar:

  • ssh_host_ecdsa_key
  • ssh_host_ecdsa_key.pub

sinds OpenSSH 6.54 is een nieuw privé / openbaar sleutelpaar beschikbaar:

  • ssh_host_ed25519_key
  • ssh_host_ed25519_key.pub

regenererende hostsleutels

rm /etc/ssh/ssh_host_*dpkg-reconfigure openssh-server

Remote login

met wachtwoord

Als u wilt inloggen bij $remote_host als gebruiker $remote_user typt u gewoon

ssh $remote_user@$remote_host

en typt u vervolgens uw wachtwoord in.

als de gebruikersnamen op de lokale en de externe computer identiek zijn, kunt u de $remote_user@-part laten vallen en gewoon

ssh $remote_host

schrijven als dit de eerste keer is dat u zich aanmeldt op de externe computer, zal ssh u vragen of u zeker weet dat u verbinding wilt maken met de externe computer. Antwoord ‘ ja ‘ nadat u de vingerafdruk van de externe computer hebt geverifieerd, typt u uw wachtwoord in, en ssh zal u verbinden met de externe host.

gedeelde sleutels

een van de functies van ssh is het gebruik van een paar private/publieke sleutels om verbinding te maken met een externe host. Ook bekend als SSH keys. Met deze methode kunt u inloggen op een externe host zonder elke keer uw wachtwoord te typen. Om dit te doen moet je een paar private/publieke sleutels genereren op je lokale machine en de publieke sleutel deponeren op de remote host.

om de sleutel te genereren, gebruik het programma ssh-keygen als volgt

ssh-keygen -t rsa

dit programma genereert een paar private / publieke sleutels in de map~/.ssh. Het programma vraagt eerst om de doelbestanden voor de sleutels, standaard in ~/.ssh. Daarna wordt een wachtwoordzin gevraagd.

opmerking: We raden aan de wachtwoordzin niet leeg te laten. Een aanvaller die je private sleutel te pakken krijgt kan anders verbinding maken met de hosts waar je je publieke sleutel hebt gedeponeerd omdat de wachtwoordzin leeg is. Kies een lange en complexe wachtwoordzin.

uw persoonlijke sleutel is id_rsa (geef het niet aan iemand anders), uw publieke sleutel is id_rsa.pub.

u kopieert uw publieke sleutel naar een remote host met het commando ssh-copy-id

ssh-copy-id -i ~/.ssh/id_rsa.pub $remote_user@$remote_host

nu kunt u eenvoudig verbinding maken met de remote host en het wachtwoord wordt gevraagd. Eenmaal gedaan, krijg je verbinding met de remote host. In het geval van een nieuwe verbinding wordt de wachtwoordzin niet opnieuw gevraagd tijdens je hele sessie.

Keys management

met behulp van GUI

optioneel is seahorse een GNOME-applicatie die gemakkelijk encryptiesleutels en wachtwoorden beheert via een intuã tieve grafische gebruikersinterface (GUI). Seahorse is in staat om verschillende operaties te doen. Zoals SSH-of PGP-sleutels maken, ze configureren en in de cache plaatsen. Lees meer.

Securing

SSH Server

standaard is een SSH server relatief veilig. Met behulp van enkele goede praktijken, configuratieopties en externe hulpprogramma ’s is het mogelijk om het nog moeilijker te maken voor’ robots ‘ en crackers

goede praktijken met SSH Server

  • /!\ pas openssh-server beveiligingsupdates zo snel mogelijk toe. Die het mogelijk maakt om te beschermen tegen bekende veiligheidslekken.

  • Activeer SSH sleutels authenticatie alleen met wachtwoorden / wachtzinnen. Alleen authenticatie met wachtwoord deactiveren.

  • overweeg fail2ban te gebruiken, een logbestandsmonitor die automatisch een IP-adres verbant na een vooraf bepaald aantal mislukte aanmeldpogingen. Die automatisch beschermt tegen brute-force aanvallen.

  • meer goede praktijken voor het gebruik van SSH at https://lackof.org/taggart/hacking/ssh/

configuratie-opties

(!) men zou het bestand /etc/ssh/sshd_config moeten Bewerken om de parameters te veranderen en dan de SSH server opnieuw op te starten met

service ssh restart
  • deactiveer het gebruik van wachtwoorden voor authenticatie (PasswordAuthentication no).

  • deactiveren met het root account (PermitRootLogin no).

  • alleen inloggen toestaan door bepaalde gebruikers of groepen (AllowUsers en AllowGroups)

{i} de opties AllowUsers en AllowGroups verbeteren de beveiliging van een SSH-server niet. Maar in bepaalde gevallen hun gebruik maakt het mogelijk om een brute kracht aanval een beetje langer te weerstaan.

externe hulpprogramma ‘s

  • fail2ban: maakt het mogelijk om IP’ s die proberen een SSH-server brute forceren automatisch op de zwarte lijst te zetten met behulp van iptables.

  • denyhosts : als fail2ban maakt denyhosts het mogelijk om IP-adressen te blokkeren die proberen een verbinding met ssh te forceren. Maar in tegenstelling tot fail2ban gebruikt het geen iptables, maar het bestand /etc/hosts.ontkennen.

SSH Client

goede praktijken met SSH Client

  • /!\ pas openssh-client beveiligingsupdates zo snel mogelijk toe. Die het mogelijk maakt om te beschermen tegen bekende veiligheidslekken.

  • SSH-sleutels gebruiken. In plaats van wachtwoordverificatie.

  • voeg sterke wachtwoorden / wachtzinnen toe aan uw SSH sleutels. Dit vermindert het risico op brute-force aanvallen.

extra functies

Bestanden weergeven in GUI

in bestandsbeheerders zoals Konqueror, Dolphin, Krusader en Midnight Commander kunt u FISH gebruiken om bestanden in een GUI te bekijken met:

fish://username@server_name_or_ip

extra commando ‘ s

scp

scp is een commandoregelprogramma waarmee bestanden tussen twee machines kunnen worden overgedragen.

  • een bestand verzenden:
scp $source_file $remote_user@$remote_host:$destination_file
  • een bestand kopiëren naar de lokale machine:
scp $remote_user@$remote_host:$source_file $destination_file

sftp

tekstmodus

grafische modus

clusterssh

ssh-agent en SSH-add

ssh-agent is een nuttig hulpprogramma voor het beheren van privésleutels en hun wachtzinnen. De meeste bureaubladomgevingen in Debian zullen al ingesteld zijn om ssh-agent uit te voeren (via systemd user services of /etc/X11/Xsession), dus u hoeft het niet handmatig te starten.

# Check if ssh-agent is runningenv | grep -i ssh

u moet de agent nog steeds vertellen uw sleutels te beheren.

# List keys managed by the agentssh-add -l# Add your ssh keyssh-add ~/.ssh/your_private_key

wanneer eerst een privésleutel nodig is, wordt u gevraagd om de wachtzin ervan. ssh-agent zal dan de sleutel onthouden zodat je wachtwoord niet meer gevraagd wordt.

keychain

Keychain, geleverd door het pakket keychain, is een shellscript waarmee de SSH-agent in meerdere sessies van dezelfde computer kan worden gebruikt. In feite creëert ssh-agent na de eerste start een permanente socket die de communicatie met ssh mogelijk maakt. Naar deze socket wordt alleen verwezen in de omgeving van de sessie waarin de agent is gestart. Keychain maakt het mogelijk om de agent te detecteren en de toegang tot deze agent te verspreiden naar andere sessies; dit maakt het mogelijk om een enkele instantie van ssh-agent per gebruiker op een machine te gebruiken.

ssh-askpass

ssh-askpass is een hulpprogramma om eenvoudig het wachtwoord van een privésleutel te vragen wanneer deze wordt gebruikt. Er bestaan verschillende implementaties:

  • x11-ssh-askpass: versie voor X11

  • kaskpass: integratie van ssh-askpass in de KDE-omgeving

  • ssh-askpass-gnome : integratie van ssh-askpass in de Gnome-omgeving

libpam-usb

libpam-usb is een hulpprogramma (alleen beschikbaar tot Debian Jessie) dat authenticatie met een USB-stick mogelijk maakt. Dit pakket bevat een nuttige utilty: pamusb-agent. Deze tool, eenmaal correct geconfigureerd, maakt het mogelijk om de SSH sleutels aanwezig op de USB-stick te laden zodra deze is aangesloten en om ze te lossen wanneer deze is losgekoppeld.

opdrachten op afstand

Als u slechts één opdracht op de externe computer wilt uitvoeren, hoeft u niet in te loggen. U kunt SSH vertellen om het commando uit te voeren zonder in te loggen, bijvoorbeeld,

ssh $remote_user@$remote_host 'ls *.txt'

toont alle bestanden met extensie .txt op de externe computer. Dit werkt met single tick quotes’…’zoals hier getoond, met dubbele aanhalingstekens”…”, en zonder citaten. Er kunnen echter verschillen zijn tussen deze drie gevallen, die hier nog niet zijn gedocumenteerd.

SSH naar Debian vanuit een ander besturingssysteem

  • PuTTY is een terminal emulator applicatie die kan fungeren als een client voor ssh. Het wordt veel gebruikt door Windows-gebruikers.

  • Wikipedia heeft Comparison_of_SSH_clients

Good practices of SSH usage

u moet dit lezen: https://lackof.org/taggart/hacking/ssh/

dit document somt veel goede praktijken op die reguliere SSH gebruikers moeten volgen om te voorkomen dat de beveiliging van hun accounts (en van de hele machine tegelijkertijd) in gevaar komt.

configureer uw ~/.ssh / config om alleen de juiste sleutel te verzenden.

Host master.debian.org User account IdentityFile ~/.ssh/id_rsa IdentitiesOnly yes

probleemoplossing

OpenSSL-versie klopt niet. Gebouwd tegen 1000105f, je hebt 10001060

als je een foutmelding als deze krijgt bij het starten van de SSH daemon, moet je Uitvoeren:

apt install openssh-server openssh-client

zie ook bug # 732940.

SSH hangt

probleem

u probeert SSH in een externe computer te plaatsen. Maar tijdens SSH log-in de sessie hangt / bevriest voor onbepaalde tijd. Zo wordt u niet gepresenteerd met de opdrachtprompt. En u kunt geen ssh commando ‘ s gebruiken: ( bij gebruik van SSH debug mode hangt de sessie op deze regel debug2: kanaal 0: open bevestig rwindow 0 rmax 32768

mogelijke oorzaak

met sommige routers achter NAT en bij gebruik van OpenSSH. Tijdens het instellen van de sessie, nadat het wachtwoord is gegeven, stelt OpenSSH het veld TOS (type of service) in in het IP-datagram. De router stikt hierin. Het effect is dat je ssh sessie voor onbepaalde tijd blijft hangen. Met andere woorden, ssh commando ‘ s of verbindingen werken zelden of helemaal niet.

resolutie met IPQoS 0x00

totdat uw routerfabrikant de firmware heeft gerepareerd. Hier is een optie om dat probleem op te lossen:

  1. Controleer uw openssh-server en openssh-client versie zijn 5.7 of meer recent. De resolutie hieronder zou bijvoorbeeld moeten werken met Debian 7.11 Wheezy of recenter, omdat deze wordt geleverd met OpenSSH versie 6.0.

  2. Bewerk een van de volgende twee bestanden op:

    ~/.ssh/config

    of

    /etc/ssh/ssh_config

    opmerking: het configuratiebestand is per gebruiker en het ssh_config-bestand is voor alle gebruikers en het hele systeem. Als u niet zeker bent, bewerk dan het juiste configuratiebestand voor de gebruiker.

    bestandsinhoud vóór

    Host *

    bestandsinhoud na

    Host * IPQoS 0x00
  3. als er al een Terminal / Console venster (en) geopend is. Sluit ze allemaal volledig af. Door dit te doen worden alle actieve SSH sessies afgesloten.
  4. het is niet nodig om OpenSSH of uw Debian opnieuw op te starten. Probeer opnieuw om SSH in een externe server. Het zou moeten werken. Heb je dat probleem met succes opgelost :)

    met dank aan Joe en catmaker voor deze tip :)

    gerelateerde documentatie op https://www.openssh.com/txt/release-5.7

resolutie met netcat

/!\ waarschuwing: Er wordt voorgesteld om te overwegen om die andere resolutie te gebruiken met IPQoS 0x00 in plaats van netcat/ProxyCommand NC %H %p optie. Omdat IPQoS 0x00 de officiële ingebouwde OpenSSH optie is. Ook IPQoS 0x00 is een meer directe manier om dat probleem op te lossen, en potentieel veiliger optie. Omdat IPQoS 0x00 gebruik maakt van SSH ‘ s ingebouwde encryptie voor veilige overdrachten. Vergelijk met netcat ‘ s niet versleutelde transfers. Bronnen: 1 2. Als u ervoor kiest om netcat/Proxycommando NC %H %p optie te gebruiken Lees verder.

een andere optie om dat SSH-probleem op te lossen is het gebruik van Proxycommando nc %H %p. Om dit te doen volgt u dezelfde stappen als die hierboven resolutie met IPQoS 0x00. Maar vervang IPQoS 0x00 door

ProxyCommand nc %h %p

houd SSH-verbinding levend

om veiligheidsredenen wordt standaard een SSH-verbinding na een bepaalde periode automatisch gesloten. Maar in sommige gevallen wilt u die verbinding open te houden. Zoals cloudopslag via SSH-verbinding.

/!\ waarschuwing: voor het activeren van de optie houd de SSH-verbinding levend. Er wordt voorgesteld om te overwegen om zowel uw SSH Client en SSH Server te beveiligen. Omdat er bijvoorbeeld een risico bestaat dat als uw gebruikers hun SSH-sessie open laten, en hun computer onbeheerd en ontgrendeld. Iedereen kan die computer benaderen en dan die open SSH-verbinding exploiteren. Bijvoorbeeld door het passwd commando te gebruiken en het wachtwoord te wijzigen. En zo toegang krijgen tot de server. Met andere woorden, voor het activeren van die houd SSH verbinding levend optie, wordt voorgesteld om uw beste oordeel en goede beveiligingspraktijken te gebruiken.

Voor Debian 7.X server

stappen om de SSH-verbinding levend te houden.

op de SSH server Bewerk/etc/ssh / sshd_config bestand en voeg het volgende toe aan de onderkant van dat bestand.

# Keep client SSH connection alive by sending every 300 seconds a small keep-alive packet to the server in order to use ssh connection. 300 seconds equal 5 minutes.ClientAliveInterval 300 # Disconnect client after 3333 "ClientAlive" requests. Format is (ClientAliveInterval x ClientAliveCountMax). In this example (300 seconds x 3333) = ~999,900 seconds = ~16,665 minutes = ~277 hours = ~11 days.ClientAliveCountMax 3333

als root-gebruiker Herstart de SSH-service:

service sshd restart

houd er rekening mee dat op recente Debian systemen (bijvoorbeeld Wheezy 7 met huidige updates vanaf november. 2015), het bovenstaande commando werkt niet meer en geeft de fout terug:

sudo service sshd restartsshd: unrecognized service

echter, de volgende werken:

sudo service ssh restart Restarting OpenBSD Secure Shell server: sshd.

zie ook

  • screen-terminal multiplexer met VT100 / ANSI terminal emulatie

  • tmux-alternatieve terminal multiplexer

CategoryNetwork CategorySoftware

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.