SSH
Indenfor computere er Secure Shell eller SSH et sæt standarder og en tilhørende netværksprotokol, der tillader oprettelsen af en sikker kanal mellem en lokal- og en fjern-PC; krypteret fjernadgang. SSH bruger public-key kryptografi til at stadfæste ægtheden af (authenticate) fjern-PC'en og (valgfrit) til at tillade fjern-PC'en at stadfæste ægtheden af brugeren. SSH giver en fortrolig og hæderlig måde hvorpå man kan udveksle data mellem to maskiner på, ved at bruge kryptering og "message authentication codes" (MACs). SSH bruges typisk til at logge ind på fjern-maskiner og eksekvere kommandoer, men "tunneling", "forwarding arbitrary TCP ports" og X11 forbindelser understøttes også. Ligesom SSH kan udveksle filer med de associerede protokoller SFTP eller SCP. En SSH server lytter som standard på TCP port 22. Oversat fra den engelske wikipedia's definition på SSH
Opsætning af gode sikkerhedsprotokoller for SSH
Det er ikke sikkert at tillade root login via SSH. Det er ikke ønskværdigt at root brugere logger ind som standard, -overhovedet! Debian bør være et sikkert system. Det er heller ikke ønskværdigt at brugere har 10 minutter til at udføre et hurtigt "brute force attack" på dit ssh login. Så husk, det er op til dig at begrænse tiden og antallet af tilladte forsøg for at mindske risikoen!
For at øge sikkerheden af din ssh, bruger du din favorit tekst editor med root rettigheder, og så åbner du denne fil:
/etc/ssh/sshd_config
Nu skal vi bare lokalisere og ændre alle betænkelige indstillinger.
De indstillinger du skal lokalisere og ændre er følgende:
Port <desired port>: Her skal du definere den korrekte port som du forwarder fra din router. Port forwarding skal naturligvis også indstilles i din router. Hvis du ikke ved hvordan, eller hvad det betyder, så kan det være at SSH til fjern-adgang ikke lige er det rigtige at kaste sig over endnu. Debian indstiller som standard porten til 22, det anbefales dog kraftigt at anvende en port udenfor standard-skanner-området, lad os for eksempel tage port 5874, så det bliver:
Port 5874
ListenAddress <maskine eller netkort IP>: Eftersom du nu forwarder en port fra din router skal du sætte maskinen op til at have en statisk ip adresse på netværket, medmindre du bruger en dns server lokalt. Men... Hvis du gør noget så kompliceret som dét, og alligevel er her for at læse disse instruktioner, så er du sandsynligvis ved at begå en kæmpe stor fejl. Vi bruger en statisk IP for eksempel:
ListenAddress 192.168.2.134
Protocol 2 er allerede standard på debian, du bør kontrollere dette for at være sikker.
LoginGraceTime <Antal sekunder man har til at udføre sit login>: kommer med den absurde standard på 600 sekunder. Det tager under ingen omstændigheder 10 minutter at skrive et brugernavn og et password, så indstil dette til noget mere fornuftigt:
LoginGraceTime 45
Nu har du 45 sekunder til at logge ind, og hackere har ikke længere 10 minutter til at forsøge at bryde dit password i
PermitRootLogin <yes>: Hvorfor dette er standard er uforståeligt. Vi ændrer det straks til et 'no'
PermitRootLogin no
StrictModes yes
MaxAuthTries <xxx>: Antallet af gange man kan forsøge at logge ind, du kan indstille dette til 3 eller 4 men bestemt ikke mere end det
MaxAuthTries 2
Hvis nogle af de følgende indstillinger ikke er til stede skal du tilføje dem:
AllowUsers: brugernavne, adskilt af mellemrum, på de brugere det er tilladt at få adgang via SSH
AllowUsers <xxx>: Kun brugere der er skrevet ind her kan få adgang, og det kun med deres brugerrettigheder. Med adduser bør du tilføje en ny bruger til systemet, som udelukkende skal anvendes til SSH, og derefter tilføje brugeren her
AllowUsers brugernavn
PermitEmptyPasswords <xxx>: giv den eneste bruger, med ret til at logge ind via SSH, et meget langt og kompliceret password, der ikke vil kunne gættes på mindre end tusinde år. Når først du er inde kan du bare bruge kommandoen 'su' for at få root adgang:
PermitEmptyPasswords no
PasswordAuthentication <xxx>: Åbenlyst; hvis du benytter password til login skal dette indstilles til 'yes'.
PasswordAuthentication yes [medmindre du bruger keys til login]
Til sidst:
service ssh restart
Nu har du en, omend ikke helt sikker, så dog meget sikker SSH konfiguration. Specielt hvis du fulgte rådet og har tilføjet en bruger med adduser, der kun anvendes til SSH, og som ydermere er den eneste tilladte SSH-bruger
Bemærk: Hvis du får en fejl-meddelse og ssh nægter at forbinde dig, naviger da til din hjemme mappe $HOME og find den skjulte mappe der hedder .ssh og slet deri filen der hedder known_hosts og forsøg så igen. Denne fejl opstår mestendels for dem der anvender dynamisk IP (DCHP)
Afvikling af X Window programmer via netværk gennem SSH forbindelser
ssh -X tillader dig at logge ind i en fjern computer og få fjerncomputerens grafiske brugerflade X vist på din lokale computer. Som $bruger (og bemærk at X skal være stort bogstav):
$ ssh -X username@xxx.xxx.xxx.xxx (or IP)
Skriv kodeordet for brugernavnet på fjerncomputeren og kør X-application i skallen:
$ iceweasel ELLER oocalc ELLER oowriter ELLER kspread
Nogle virkeligt langsomme netforbindelser kan have gavn af et lag af kompression for at bedre hastigheden, tilføj i sådanne tilfælde en ekstra parameter (på hurtige netværk har det den modsatte effekt!):
$ ssh -C -X username@xxx.xxx.xxx.xxx (or IP)
Læs:
$man ssh
Bemærk: Hvis du får en fejl-meddelse og ssh nægter at forbinde dig, naviger da til din hjemme mappe $HOME og find den skjulte mappe der hedder .ssh og slet deri filen der hedder known_hosts og forsøg så igen. Denne fejl opstår mestendels for dem der anvender dynamisk IP (DCHP)
kopiering af filer og mapper fra fjerncomputeren via ssh med scp
scp bruger kommandolinien (terminal/cli) til at kopiere filer mellem værter på et netværk. Der anvendes ssh autentification og sikkerhed for datatransmissionen, derfor vil scp spørge efter kodeord eller passphrases som krævet af autentification.
Antag at du har ssh rettigheder til en fjerncomputer eller en server, scp tillader dig at kopiere partitioner, filer eller mapper til og fra den PC, til eller fra en destination efter eget valg, blot du også har rettigheder dertil. Dette kunne for eksempel inkludere en anden server eller PC, som du har rettigheder til, på dit LAN (eller hvor som helt i verden), eller det kan være din USB-nøgle der sidder i din PC.
Du kan recursivt kopiere hele partitioner og mapper med scp -r parametren. Bemærk: scp -r følger symbolske links i mappe strukturen.
Eksempler:
Eksempel 1: Kopier en partition:
scp -r <user>@xxx.xxx.x.xxx:/media/disk1part6/ /media/diskXpartX/
Eksempel 2: Kopier en mappe på en parititon, her en mappe der hedder photos i $HOME:
scp -r <user>@xxx.xxx.x.xxx:~/photos/ /media/diskXpartX/xx
Eksempel 3: Kopier filer fra en mappe på en partition, her filer i $HOME:
scp <user>@xxx.xxx.x.xxx:~/filename.txt /media/diskXpartX/xx
Eksempel 4: kopier en fil på en partition:
scp <user>@xxx.xxx.x.xxx:/media/disk1part6/filename.txt /media/diskXpartX/xx
Eksempel 5: Hvis du allerede er i den mapper/ på det drev som du vil kopiere en mappe til eller filer til, brug så et ' . ' (punktum) :
scp -r <user>@xxx.xxx.x.xxx:/media/disk1part6/filename.txt .
Eksempel 6: For at kopiere filer fra din PC/server til en anden (brug scp -r hvis du kopierer partitioner eller mapper):
scp /media/disk1part6/filename.txt <user>@xxx.xxx.x.xxx:/media/diskXpartX/xx
Læs:
man scp
SSH Fjernadgang med X-forwarding fra en Windows-PC:
* Download og brænd Cygwin XLiveCD
* Anbring CD'en i CD-ROM drevet på Windows-PC'en og afvent at den autostarter.
Klik "continue" indtil et shell-vindue spriner frem, skriv heri:
ssh -X username@xxx.xxx.xxx.xxx
Bemærk: xxx.xxx.xxx.xxx er IP-adressen på linux fjern-maskinen, eller URL'en (fra for eksempel en dyndns.org konto) og brugernavnet er naturligvis navnet på den bruger du har specielt oprettet til SSH adgang på fjern-maskinen. Efter vellykket login kan du starte f.eks. kmail og se om du har fået post!
Vigtigt: hosts.allow skal have en tilføjelse der tillader adgang fra maskiner fra andre netværk. Hvis du er bag en NAT-firewall, eller en router skal du sikre dig at port 22 bliver forwarded til din linux-maskine
SSH med Konqueror
Konqueror og Krusader er begge i stand til at opnå adgang til fjern-data ved at anvende using sftp:// and uses the ssh protocol..
Sådan sætter du det op:
1) Open a new Konqueror window
2) Enter into the address bar: sftp://username@ssh-server.com
Eksempel 1:
sftp://aptosid1@remote_hostname_or_ip (Bemærk: Et popup vindue åbner og spørger efter dit ssh password, skriv det og klik OK)
Eksempel 2:
sftp://username:password@remote_hostname_or_ip
(med denne metode får du IKKE et popup vindue der spørger om password, du vil blive direkte forbundet.)
I et LAN miljø
sftp://username@10.x.x.x or 198.x.x.x.x (Bemærk: Et popup vindue åbner og spørger efter dit ssh password, skriv det og klik OK)
Konqueror SSH GUI forbindelsen er nu oprettet. med dette Konqueror vindue kan du nu arbejde med filerne (kopiere/fremvise), der findes på SSH-serveren, lige så nemt som hvis de var i en mappe på din egen lokale maskine.
BEMÆRK: Hvis du har konfigureret ssh til at anvende en anden port end standarden 22, er det nødvendigt at specificere den port som sftp skal anvende:
sftp://user@ip:port
'user@ip:port' er standard syntax for mange programmer som sftp and fish
SSHFS - Fjern-mounting
SSFS er en nem, hurtig og sikker metode, der anvender FUSE til at montere fjern-filsystemer. Det eneste krav fra server siden, er en fungerende og kørende ssh deamon.
På klient siden skal du muligvis installere sshfs: installation af fuse og groups er ikke nødvendig på aptosid eros og nyere, eftersom det findes som standard:
apt-get update && apt-get install sshfs
Nu skal du logge ud og logge tilbage ind igen
Montering af fjern-filsystemer er virkeligt nemt:
sshfs username@remote_hostname:directory local_mount_point
Hvor username er brugernavnet på fjern-maskinen:
Hvis ingen mappe angives bliver fjern-brugerens home-mappe monteret. OBS: kolon'et : er essentielt, selv hvis der ikke angives nogen mappe!
Efter monteringen fungerer fjern-mappen som ethvert andet filsystem, du kan kigge rundt i mapperne, redigere filerne og afvikle scripts, ligesom du kan gøre på et lokalt filsystem.
Hvis du vil afmontere fjern-værten bruger du følgende kommando:
fusermount -u local_mount_point
Hvis du bruger sshfs ofte, er det en god ide at lave en tilføjelse til fstab:
sshfs#username@remote_hostname://remote_directory /local_mount_point fuse user,allow_other,uid=1000,gid=1000,noauto,fsname=sshfs#username@remote_hostname://remote_directory 0 0
Next uncomment user_allow_other in /etc/fuse.conf:
# Allow non-root users to specify the 'allow_other' or 'allow_root' # mount options. # user_allow_other
Dette vil tillade ethvert medlem af gruppen fuse, at montere filsystemet med den velkendte kommando 'mount':
mount /path/to/mount/point
Med den linie i din fstab kan du selvfølgelig også anvende kommandoen 'umount':
umount /path/to/mount/point
For at undersøge om du er medlem af gruppen fuse, bruger du følgende kommando:
cat /etc/group | grep fuse
Du burde se noget der ligner dette:
fuse:x:117: <username>
Hvis dit brugernavn(username) ikke optræder i listen, kan du anvende adduser kommandoen som root:
adduser <brugernavn> fuse
Når du har logget af og på igen, skulle dit brugernavn optræde i listen, og følgende kommando burde kunne udføres:
mount local_mount_point
og
umount local_mount_point