Verbindung zum Server mit SSH, rsync und scp
Meine Notizen zur SSH-Anmeldung, zur Schlüsselverwaltung und zum Kopieren und Synchronisieren von Dateien mit rsync und scp.
Mein Ziel
Als Webentwickler muss ich mich über die Kommandozeile auf Servern anmelden können. Ausserdem möchte ich Dateien kopieren und Verzeichnisse synchronisieren.
Dafür verwende ich SSH, rsync und scp.
SSH
Benötigte Pakete installieren
sudo apt install rsync openssh-client wget
SSH-Schlüssel erstellen
ssh-keygen -b 4096
Für den Schlüssel verwende ich eine sichere Passphrase und lasse sie nicht leer.
Öffentlichen Schlüssel auf dem Server hinterlegen
Auf dem Zielserver wird mein öffentlicher Schlüssel aus der Datei id_rsa.pub in folgende Datei eingetragen:
~/.ssh/authorized_keys
Dort werden die öffentlichen Schlüssel der Personen aufgeführt, die sich per SSH-Schlüssel anmelden dürfen.
Wenn ich den Ordner und die Datei selbst erstelle, setze ich die Berechtigungen mit diesen Befehlen:
sudo chmod 700 ~/.ssh
sudo chmod 600 ~/.ssh/authorized_keys
SSH-Agent
Damit ich die Passphrase nicht bei jeder Verbindung erneut eingeben muss, habe ich in meiner ursprünglichen Notiz einen SSH-Agent vorgesehen.
Dafür steht dieser Eintrag in meiner Fish-Konfiguration:
eval $(ssh-agent -c)
Nach einer Änderung starte ich das Terminal neu oder lade die Konfiguration:
source .config/fish/config.fish
rsync
Ich verwende rsync, um Dateien und Verzeichnisse zu synchronisieren. Für die Übertragung von und zu Servern verwende ich dabei SSH.
Inhalt eines Serververzeichnisses übertragen
In meiner ursprünglichen Notiz steht folgender Befehl:
rsync -avz --rsh='ssh -p ' username@serveradresse.com:/pfad/zu/meinordner/ lokalerordner/
Achtung: Hinter
ssh -pfehlt die Portnummer. Der Befehl muss vor der Verwendung angepasst werden.
Der abschliessende Schrägstrich bei meinordner/ ist in meiner Notiz dafür vorgesehen, den Inhalt des Ordners zu übertragen.
Einen ganzen Ordner übertragen
Für die Übertragung des gesamten Ordners steht in meiner Notiz:
rsync -avz --rsh='ssh -p ' username@serveradresse.com:/pfad/zu/meinordner .
Auch hier fehlt hinter
ssh -pdie Portnummer.
Der Punkt bezeichnet das aktuelle lokale Verzeichnis. Im Unterschied zum vorherigen Beispiel steht hinter meinordner kein abschliessender Schrägstrich.
scp
Mit scp kopiere ich einzelne Dateien vom oder zum Server.
Datei vom Server kopieren
scp user@servername:/pfad/zu/meinordner/meinedatei.dateityp .
Datei zum Server kopieren
scp meinedatei.dateityp user@servername:/pfad/zu/meinzielordner/
Notiz zum Terminalfenster
In meinem damaligen Debian-Terminal habe ich in den Fenstereigenschaften die Fenstergrösse auf 9999 gestellt, um weiter nach oben scrollen zu können.