Dies ist eine alte Version des Dokuments!
Todo: anpassen des Unit-Files bei systemd 1)
Einloggen auf <Rechner> mit <Benutzer>: 2)
ssh <Benutzer>@<Rechner>
hängende ssh-Verbindung beenden:
~.
ssh-Verbindung pausieren:
~Strg+z
Dateien auf andere Rechner kopieren: 3)
scp <Datei> <Benutzer>@<Rechner>:/<Verzeichnis>
Dateien auf andere Rechner ohne lange Pfadangaben ins $HOME-Verzeichnis von <Benutzer> kopieren:
scp <Datei> <Benutzer>@<Rechner>:<Verzeichnis>
Fingerprint Hostkey überprüfen:
ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
rm /etc/ssh/ssh_host_*key* dpkg-reconfigure openssh-server
Einfach:
ssh-keygen
oder für Schlüssel mit Kommentar auf Basis von Curve25519
ssh-keygen -t ed25519 -C "Kommentar"
ssh-copy-id -i .ssh/id_rsa.pub nutzer05@notebook06
oder von Hand:
ssh nutzer05@notebook06 'mkdir -m 700 ~/.ssh' ssh nutzer05@notebook06 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub ssh nutzer05@notebook06 'chmod 400 .ssh/authorized_keys'
/etc/ssh/sshd_config
:
UsePAM no PasswordAuthentication no
Alternativ (CentOS 7)
UsePAM yes ChallengeResponseAuthentication no PasswordAuthentication no
Problem: die Datei ~/.ssh/authorized_keys
gehört dem Nutzer, den man einschränken möchte.
command="/bin/cat /var/log/messages",no-agent-forwanding,no-X11-forwarding,no-port-forwarding ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHBqUtiLsRTLKquoVXKwhrPRD92CzaN9EOkVEfWoHfdC nutzer26@notebook26
Match User nutzer12 ForceCommand /usr/local/bin/cat_messages
#!/bin/sh /bin/cat /var/log/messages
ssh -A nutzer17@notebook17 ssh nutzer07@notebook07
root kann den Socket für das Agent-Forwarding mitnutzen: 5)
PIDS="$(lsof -t -a -i -c sshd -u nutzer05)"
export SSH_AUTH_SOCK=$(for pid in $PIDS; do echo /tmp/ssh-*/agent.$pid; done | head -n 1)
ssh nutzer05@notebook07
Auch ein ssh-agent auf dem client-Rechner kann ähnlich mitgenutzt werden:
PIDS="$(lsof -t -w -a -U -c /agent/ -u nutzer05)"
ssh -v nutzer06@notebook06 ssh -vv nutzer06@notebook06
+--------+ +------------+ +------------+ | ssh | | Hop Server | | server | | client | | notebook01 | | notebook02 | | | ================ssh========tunnel============> | | +--------+ +------------+ +------------+
centos 7, debian 8:
ssh -o ProxyCommand="ssh -W %h:%p notebook01.linuxhotel.de" notebook02.linuxhotel.de
mit einer ~/.ssh/config
reduziert sich das zu:
Host notebook02 Hostname notebook02.linuxhotel.de ProxyCommand ssh -W %h:%p notebook01.linuxhotel.de
ssh notebook02
Bei älteren SSH-Versionen muss zusätzlich netcat
bzw. nc
auf dem Jumphost installiert sein:
debian 6, centos 6:
Host notebook02 Hostname notebook02.linuxhotel.de ProxyCommand ssh -q notebook01.linuxhotel.de nc %h %p
optionale Absicherung, damit sich der Benutzer nicht auf dem Hop-Server einloggen kann
# nutzer02 wird auf notebook02 weitergeleitet: Match User nutzer02 ForceCommand ssh nutzer02@notebook02 $SSH_ORIGINAL_COMMAND # nutzer01 wird auf den mit der Option -W gewählten Server weitergeleitet: Match User nutzer01 ForceCommand ssh %u@%h $SSH_ORIGINAL_COMMAND
Allgemein:
ssh -L <lokaler Port>:<Zielrechner>:<Zielport> <Benutzer>@<ssh-Server>
Spezialfall X-Weiterleitung:
ssh -X <Benutzer>@<Rechner>
Dazu muß in der Datei /etc/ssh/sshd_config
folgender Eintrag vorhanden sein:
X11Forwarding yes
Tunnel Rückwärts:
ssh -R <Port auf ssh-Server>:<Zielrechner>:<Zielport> <Benutzer>@<ssh-Server>
Dazu muß in der Datei /etc/ssh/sshd_config
folgender Eintrag vorhanden sein:
GatewayPorts yes
Tunnel nachträglich anlegen:
~C help -L <lokaler Port>:<Zielrechner>:<Zielport>
noch nicht getestet
ssh -f -w 0:1 192.168.1.15 true ifconfig tun0 10.1.1.1 10.1.1.2 netmask 255.255.255.252 route add 10.0.99.0/24 10.1.1.2
/etc/ssh/sshd_config
:
PermitTunnel yes
ifconfig tun1 10.1.1.2 10.1.1.1 netmask 255.255.255.252 route add 10.0.50.0/24 10.1.1.1
ssh-agent
bei der Anmeldung nur gestartet, wenn das Verzeichnis ~/.ssh
existiert:mkdir -m 700 ~/.ssh
-t
), -i
),sshd
beginnt ( -c
),-u
) /tmp/ssh-*/agent.$pid
), und speichert eine ( head -n 1
) in der Variablen SSH_AUTH_SOCK
.ssh -J notebook01.linuxhotel.de notebook02.linuxhotel.de