Secure Shell Handledning
Komma igång med Secure Shell
Sök…
Anmärkningar
SSH (Secure Shell) är ett kryptografiskt protokoll för punkt-till-punkt-kommunikation över det osäkra nätverket (Internet). Det föråldrar de gamla protokollen som använts i gamla dagar ( rlogin , rsh , telnet ).
Det används vanligtvis för att ansluta till fjärrservrar, virtuella maskiner eller containrar i datacenter eller i ditt privata moln (google compute engine, AWS, ...). Men det används också ofta i samband med git för att få tillgång till och uppdatera ditt arkiv säkert och enkelt med hjälp av offentliga nycklar istället för lösenord.
Den bör också nämna alla stora ämnen inom ssh och länka till relaterade ämnen. Eftersom dokumentationen för ssh är ny kan du behöva skapa initialversioner av relaterade ämnen. ATT GÖRA
versioner
| Version | Släppanteckningar | Utgivningsdatum |
|---|---|---|
| OpenSSH 7.3p1 | Senaste versionen | 2016/08/01 |
| OpenSSH 7.2p2 | 2016/03/09 | |
| OpenSSH 7.1p2 | 2016/01/14 | |
| OpenSSH 7.1 | 2015/08/21 | |
| OpenSSH 7.0 | 2015/11/08 | |
| OpenSSH 6.9 | 2015/07/01 | |
| OpenSSH 6.8 | 2015/03/18 |
Installation eller installation
Gratis version av implementering av SSH-protokoll, OpenSSH är tillgängligt i alla Linux-distributioner. Det består av servern och klientpaketen.
Installation
På Debian-baserade Linux kan du installera openssh med
# apt-get install openssh-server openssh-client
På RHEL / CentOS måste du använda yum :
# yum install openssh-server openssh-clients
Nuvarande Fedora använder dnf istället för yum .
Använd pacman på Arch Linux:
# pacman -S openssh
På OSX bör openssh redan vara installerat.
Om du vill använda en nyare version måste du installera openssh från brew:
# brew install openssh --with-brewed-openssl --with-keychain-support
TODO instruktioner för Windows
Uppstart
openssh klienten behöver ingen speciell installation och är redo att användas strax efter installationen. Du kan prova att köra ssh remote , där remote är fjärrvärden som kör ssh servern.
openssh servern startas vanligtvis efter installationen och standardinställningen har tillämpats. Om inte, kan du starta det på systemd system med
På Debian-baserad Linux med systemd:
# systemctl start ssh
På RHEL / CentOS / Fedora och Arch Linux:
# systemctl start sshd
Eller på upstart-system som använder
# service sshd start
Konfiguration
openssh har konfigurationsfiler under /etc/ssh/ . Klienten läser också klientkonfiguration i ~/.ssh/config . Servern använder en fil sshd_config , som innehåller de flesta av standardvärdena och innehåller enkla nyckelvärdespar. Exempel:
Protocol 2
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY
X11Forwarding yes
Subsystem sftp /usr/libexec/openssh/sftp-server
Skapa din SSH-nyckel
Du kan skapa din ssh-nyckel med ssh-keygen, det är ett program som ingår i ssh-installationen. För att göra det bara kör det och följ instruktionerna på skärmen.
Här är ett exempel:
$ ssh-keygen
Generating public/private rsa key pair.
Standardkatalogen där du ssh-tangentparet kommer att sparas är inuti .ssh mappen i din hemkatalog (du kan ändra detta genom att ange en giltig sökväg) och standardnamnet för knappsatsen är id_rsa för den privata nyckeln och id_rsa.pub för den offentliga nyckeln:
Enter file in which to save the key (/home/nasreddine/.ssh/id_rsa): /home/my_folder/my_ssh_key
Du kan skydda din SSH-nyckel från obehörig användning genom att ange ett lösenord. Detta är valfritt men det rekommenderas att du använder en lösenfras. Observera att det, som med alla andra kommandoprogram, inte kommer att visa någonting på skärmen, men det spelas in:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
När du anger din lösenfras kommer ssh-keygen att generera en nyckel och spara den på den sökväg du valt:
Your identification has been saved in /home/my_folder/my_ssh_key.
Your public key has been saved in /home/my_folder/my_ssh_key.pub.
Var gjort. Nu är vår ssh-nyckel redo att användas.
Hur man SSH till en maskin
För att logga in på ett användares konto på maskin med SSH kan du använda kommandot ssh username@ip_address . Den kommer att be om ett lösenord. Om du skriver rätt lösenord kommer du att anslutas till användarens skal på den maskinen. Annars kommer det att be om lösenordet igen.
Till exempel
root@dev10:~# ssh [email protected]
[email protected]'s password:
Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-31-generic x86_64)
Last login: Fri Jul 22 18:33:27 2016 from 10.11.50.10
root@dev2:~#
Om du vill använda en specifik ssh-nyckel för att ansluta till en maskin använder du ssh -i /path/to/ssh_secret_key username@host
När du ansluter till en maskin för första gången kommer den att be dig att verifiera målmaskinens fingeravtryck . Detta är en säkerhetsmekanism för att undvika en man-i-mitt-attack . Du kan se målmaskinens fingeravtryck genom att utfärda detta kommando i målmaskinen.
ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ecdsa_key.pub
Du kan skriva "ja" om båda är samma. Det fortsätter till lösenordprompt.
Exempel:
root@dev10:~# ssh [email protected]
The authenticity of host '10.11.50.3 (10.11.50.3)' can't be established.
ECDSA key fingerprint is dd:a3:de:cd:5b:01:cd:0b:b6:bc:b3:09:c2:c8:1a:68.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.11.50.3' (ECDSA) to the list of known hosts.
[email protected]'s password:
Last login: Fri Jul 22 17:45:09 2016 from 10.11.1.71
root@dev2:~#
Lägga till din offentliga nyckel i listan över serveranvändares auktoriserade nycklar
För att ssh på en server måste din identitets offentliga nyckel läggas till i listan över betrodda nycklar. Vanligtvis görs detta per användare:
ssh-copy-id -i ~/.ssh/<identity>.pub <user>@<hostname>
Som också kan göras manuellt:
cat ~/.ssh/<identity>.pub | ssh <user>@<hostname> 'cat >> ~/.ssh/authorized_keys'
Efter att ha gjort det borde du kunna logga in utan att behöva ange användarens lösenord när du skickar identitetsfilen till ssh samtalet.
Ansluta från skript med lösenord
När du verkligen behöver skript- ssh anslutning fungerar inte piping av lösenordet i ssh kommandot ( echo passw0rd | ssh host ). Det beror på att lösenordet inte läses från standardinmatning, utan direkt från TTY (teleprinter, teletypewriter, Teletype av historiska skäl).
Men det finns sshpass verktyg som sshpass problemet. Den kan läsa lösenordet från parameter, fil eller miljövariabel. Men observera att inget av dessa alternativ inte uppfyller säkerhetskraven för ett lösenord!
$ sshpass -p passw0rd ssh host
$ sshpass -f /secret/filename ssh host
$ SSHPASS=passw0rd sshpass -e ssh host
Kommandoradsalternativen kan ses av andra användare i ps (under körning är det maskerat, men inte under starttid och du kan inte lita på det):
... 23624 6216 pts/5 Ss Aug30 0:00 \_ /bin/bash
... 12812 1988 pts/5 S+ 08:50 0:00 | \_ sshpass -p passw0rd ssh host
... 45008 5796 pts/15 Ss+ 08:50 0:00 | \_ ssh host
Observera att miljömätvariabler i en process också är tillgängliga av andra processer i systemet med /proc/PID/environ .
Slutligen kan lagring av lösenord i filen se ut som den bästa tanke, men ändå använder man nycklar som beskrivs i de andra exemplen för att använda ssh .
Konfigurera fil
OpenSSH-konfigurationsfiler används för konfiguration som ska tillämpas varje gång ssh-klienten körs. De flesta kommandoradsalternativ är möjliga att lägga i konfigurationsfilerna.
OpenSSH använder konfiguration från följande källor i ordning:
- Alternativ för kommandorad
- Användarens konfigurationsfil
~/.ssh/config - Systembredd konfigurationsfil
/etc/ssh/ssh_config
Konfigurationsalternativ listas en efter en i konfigurationsfilerna.
# This is a comment.
# Parameter can be specified like this, separated with white space.
StrictHostKeyChecking ask
# Or parameter key and value may be separated with white space and =.
ForwardX11 = yes
# The parameter value can be quoted if it contains white space.
IdentityFile "/file system/path with/white space"
Den kompletta listan över möjliga konfigurationsparametrar finns här .
En av de mest användbara funktionerna i konfigurationsfilen är att den kan delas ut baserat på värdnamn eller adress. På detta sätt kan du ha olika konfigurationer för olika värdar.
# Based on host name.
Host host1.domain.com
User user1
Host host2.domain.com
User user2
# Or wildcard matching name or ip.
Host *elastic-cloud.com 10.201.4.?
User user3
SSH-Agent
Om du har ställt in en lång lösenfras och inte vill fortsätta ange den varje gång du vill ansluta till servern kan du använda SSH-Agent för att lagra din lösenfras medan du är inloggad på din dator.
Starta ssh-agenten i bakgrunden:
eval "$(ssh-agent -s)"
# Agent pid 59566
Och lägg till din nyckel till ssh-agenten, du blir ombedd att ange din lösenfras:
ssh-add ~/.ssh/matrix.ac
# Enter passphrase for /home/osaka/.ssh/matrix.ac:
# Identity added: /home/osaka/.ssh/matrix.ac (/home/osaka/.ssh/matrix.ac)
Gjort. ssh [email protected] nu till ssh [email protected] och du behöver inte ange ditt lösenord. Du kan utöka detta genom att använda program som gnome-keyring / seahorse, keychain och andra key manager.
