Looking for ssh Keywords? Try Ask4Keywords

Secure ShellErste Schritte mit Secure Shell


Bemerkungen

Die SSH (Secure Shell) ist ein kryptografisches Protokoll für die Punkt-zu-Punkt-Kommunikation über das unsichere Netzwerk (Internet). Es obsoletes die alten Protokolle in den alten Tagen verwendet ( rlogin , rsh , telnet ).

Sie wird üblicherweise für die Verbindung zu Remote-Servern, virtuellen Maschinen oder Containern im Rechenzentrum oder in Ihrer privaten Cloud (Google Compute Engine, AWS, ...) verwendet. Es wird jedoch auch häufig in Verbindung mit git um sicher und einfach auf Ihr Repository zuzugreifen und es zu aktualisieren, indem Sie öffentliche Schlüssel anstelle von Kennwörtern verwenden.

Es sollte auch alle großen Themen in ssh erwähnen und auf die verwandten Themen verweisen. Da die Dokumentation für ssh neu ist, müssen Sie möglicherweise erste Versionen dieser verwandten Themen erstellen. MACHEN

Versionen

Ausführung Versionshinweise Veröffentlichungsdatum
OpenSSH 7.3p1 Letzte Version 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

Hinzufügen Ihres öffentlichen Schlüssels zur Liste der autorisierten Schlüssel des Serverbenutzers

Um ssh auf einen Server zu übertragen, muss der öffentliche Schlüssel Ihrer Identität zur Liste der vertrauenswürdigen Schlüssel hinzugefügt werden. Am häufigsten geschieht dies pro Benutzer:

ssh-copy-id -i ~/.ssh/<identity>.pub <user>@<hostname>
 

Was kann auch manuell gemacht werden:

cat ~/.ssh/<identity>.pub | ssh <user>@<hostname> 'cat >> ~/.ssh/authorized_keys'
 

Danach sollten Sie sich anmelden können, ohne das Kennwort des Benutzers angeben zu müssen, wenn Sie die Identitätsdatei an den Aufruf von ssh .

Konfigurationsdatei

OpenSSH-Konfigurationsdateien werden für die Konfiguration verwendet, die bei jeder Ausführung des SSH-Clients angewendet werden sollte. Die meisten Befehlszeilenoptionen können in die Konfigurationsdateien eingefügt werden.

OpenSSH verwendet die Konfiguration aus den folgenden Quellen in der angegebenen Reihenfolge:

  1. Befehlszeilenoptionen
  2. Konfigurationsdatei des Benutzers ~/.ssh/config
  3. Systemweite Konfigurationsdatei /etc/ssh/ssh_config

Konfigurationsoptionen werden in den Konfigurationsdateien einzeln aufgeführt.

# 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"
 

Die vollständige Liste der möglichen Konfigurationsparameter ist hier verfügbar.

Eine der nützlichsten Funktionen der Konfigurationsdatei besteht darin, dass sie nach Hostnamen oder Adresse unterteilt werden kann. Auf diese Weise können Sie unterschiedliche Konfigurationen für verschiedene Hosts einrichten.

# 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
 

Verbindung vom Skript mit dem Passwort

Wenn Sie wirklich eine ssh Verbindung echo passw0rd | ssh host müssen, funktioniert das echo passw0rd | ssh host des Kennworts in den Befehl ssh nicht ( echo passw0rd | ssh host ). Das liegt daran, dass das Passwort nicht aus der Standardeingabe gelesen wird, sondern direkt aus TTY (Fernschreiber, Fernschreiber, Fernschreiber aus historischen Gründen).

Aber es gibt ein sshpass Tool, das dieses Problem sshpass . Es kann das Passwort von Parametern, Dateien oder Umgebungsvariablen lesen. Beachten Sie jedoch, dass keine dieser Optionen die Sicherheitsanforderungen für Kennwörter nicht erfüllt!

$ sshpass -p passw0rd ssh host
$ sshpass -f /secret/filename ssh host
$ SSHPASS=passw0rd sshpass -e ssh host
 

Die Befehlszeilenoptionen können von anderen Benutzern in ps (zur Laufzeit werden sie maskiert, jedoch nicht zur Startzeit und Sie können sich nicht darauf verlassen):

... 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
 

Beachten Sie, dass Umgebungsvariablen eines Prozesses auch von anderen Prozessen des Systems über die Datei /proc/PID/environ werden können.

Schließlich scheint das Speichern des Passworts in der Datei die bestmögliche Idee zu sein, aber die Verwendung von Schlüsseln, wie in den anderen Beispielen beschrieben, ist die bevorzugte Methode zur Verwendung von ssh .

Erstellen Sie Ihren SSH-Schlüssel

Sie können Ihren ssh-Schlüssel mit ssh-keygen erstellen, einem Programm, das Teil der ssh-Installation ist. Starten Sie es einfach und befolgen Sie die Anweisungen auf dem Bildschirm.

Hier ist ein Beispiel:

$ ssh-keygen
Generating public/private rsa key pair.
 

Das Standardverzeichnis, in dem Ihr SSH-Schlüsselpaar gespeichert wird, befindet sich im Ordner .ssh in Ihrem .ssh (dies kann durch Angabe eines gültigen Pfads geändert werden). Der Standardname für das Schlüsselpaar lautet id_rsa für den privaten Schlüssel und id_rsa.pub für der öffentliche Schlüssel:

Enter file in which to save the key (/home/nasreddine/.ssh/id_rsa): /home/my_folder/my_ssh_key
 

Sie können Ihren SSH-Schlüssel durch die Eingabe eines Kennworts vor unbefugter Verwendung schützen. Dies ist optional, es wird jedoch empfohlen, eine Passphrase zu verwenden. Beachten Sie, dass wie bei jedem anderen Befehlsprogramm bei der Eingabe Ihrer Passphrase nichts auf dem Bildschirm angezeigt wird, sondern es wird aufgezeichnet:

Enter passphrase (empty for no passphrase):
Enter same passphrase again:
 

Sobald Sie Ihre Passphrase eingegeben haben, generiert ssh-keygen einen Schlüssel und speichert ihn unter dem von Ihnen gewählten Pfad:

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.
 

Wir sind fertig. Jetzt ist unser SSH-Schlüssel einsatzbereit.

Geben Sie hier die Bildbeschreibung ein

SSH in eine Maschine

Um sich bei einem Benutzer mit SSH auf dem Konto eines Benutzers ssh username@ip_address können Sie den Befehl ssh username@ip_address . Es wird nach einem Passwort gefragt. Wenn Sie das richtige Kennwort eingeben, werden Sie mit der Shell dieses Benutzers auf diesem Computer verbunden. Andernfalls werden Sie erneut zur Eingabe des Kennworts aufgefordert.

Zum Beispiel

root@dev10:~# ssh root@10.11.50.3
root@10.11.50.3'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:~# 
 

Wenn Sie einen bestimmten ssh-Schlüssel zum ssh -i /path/to/ssh_secret_key username@host einer Verbindung mit einem Computer verwenden möchten, verwenden Sie ssh -i /path/to/ssh_secret_key username@host

Wenn Sie zum ersten Mal eine Verbindung zu einem Computer herstellen, werden Sie aufgefordert, den Fingerabdruck des Zielcomputers zu überprüfen. Dies ist ein Sicherheitsmechanismus, um einen Man-in-the-Middle-Angriff zu vermeiden. Sie können den Fingerabdruck des Zielcomputers anzeigen, indem Sie diesen Befehl auf dem Zielcomputer ausgeben.

ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ecdsa_key.pub
 

Sie können "yes" eingeben, wenn beide gleich sind. Es wird mit der Kennwortabfrage fortgefahren.

Beispiel:

root@dev10:~# ssh root@10.11.50.3
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.
root@10.11.50.3's password: 

Last login: Fri Jul 22 17:45:09 2016 from 10.11.1.71
root@dev2:~# 
 

Installation oder Setup

OpenSSH ist eine kostenlose Version der SSH-Protokollimplementierung in allen Linux-Distributionen. Es besteht aus den Server- und Client-Paketen.

Installation

Unter Debian-basierten Linux können Sie openssh mit installieren

# apt-get install openssh-server openssh-client
 

Bei RHEL / CentOS müssen Sie yum :

# yum install openssh-server openssh-clients
 

Gegenwärtig verwendet Fedora dnf anstelle von yum .

Verwenden Sie unter Arch Linux pacman:

# pacman -S openssh
 

Unter OSX sollte der openssh bereits installiert sein.

Wenn Sie eine neuere Version verwenden möchten, müssen Sie den openssh von brew installieren:

# brew install openssh --with-brewed-openssl --with-keychain-support
 

TODO Anweisungen für Windows

Konfiguration

Der openssh Client benötigt keine besonderen Einstellungen und ist unmittelbar nach der Installation einsatzbereit. Sie können das Ausführen von ssh remote versuchen, wobei remote das Remote-Host ist, auf dem ssh Server ausgeführt wird.

Der openssh Server wird normalerweise nach der Installation gestartet und das Standard-Setup wird angewendet. Wenn nicht, können Sie es auf systemd basierten Systemen mit starten

Unter Debian-basiertem Linux mit systemd:

# systemctl start ssh
 

Zu RHEL / CentOS / Fedora und Arch Linux:

# systemctl start sshd
 

Oder auf Startsystemen mit

# service sshd start
 

Aufbau

Die openssh haben Konfigurationsdateien unter /etc/ssh/ . Der Client liest auch die Client-Konfiguration in ~/.ssh/config . Der Server verwendet eine Datei sshd_config , die die meisten Standardwerte enthält und einfache Schlüssel-Wert-Paare enthält. Beispiel:

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
 

SSH-Agent

Wenn Sie eine lange Passphrase festgelegt haben und nicht jedes Mal erneut eingeben möchten, wenn Sie eine Verbindung zum Server herstellen möchten, können Sie den SSH-Agent zum Speichern Ihrer Passphrase verwenden, während Sie auf Ihrem Computer angemeldet sind.

Starten Sie den ssh-agent im Hintergrund:

eval "$(ssh-agent -s)"
# Agent pid 59566
 

Wenn Sie Ihren Schlüssel zum ssh-agent hinzufügen, werden Sie aufgefordert, Ihre Passphrase einzugeben:

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)
 

Erledigt. Verbinden Sie sich jetzt mit ssh user@matrix.ac und Sie müssen Ihre Passphrase nicht eingeben. Sie können dies durch Programme wie Gnome-Schlüsselring / Seepferdchen, Schlüsselbund und andere Schlüsselmanager erweitern.