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.

ange bildbeskrivning här

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:

  1. Alternativ för kommandorad
  2. Användarens konfigurationsfil ~/.ssh/config
  3. 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.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow