Enable firewall rule for ssh.
sudo firewall-cmd --permanent --add-service=ssh success
Reload firewall rules.
sudo firewall-cmd --reload success
oder Firewall abschalten:
systemctl stop firewalld.service
Einloggen auf <Rechner> mit <Benutzer>: 1)
ssh <Benutzer>@<Rechner>
hängende ssh-Verbindung beenden:
~.
ssh-Verbindung pausieren:
~Strg+z
Dateien auf andere Rechner kopieren: 2)
scp <Datei> <Benutzer>@<Rechner>:/<Verzeichnis>
Dateien auf andere Rechner ohne lange Pfadangaben ins $HOME-Verzeichnis von <Benutzer> kopieren:
scp <Datei> <Benutzer>@<Rechner>:
Vor dem Neustart des Dienstes die Konfigurationsdatei auf Syntaxfehler prüfen:
sshd -t
oder ausführlicher:
sshd -dddt
ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub
Name und IP-Adresse aus known_hosts entfernen:
ssh-keygen -R notebook02 ssh-keygen -R 192.168.1.202
löschen:
rm /etc/ssh/ssh_host_*key*
dpkg-reconfigure openssh-server
service sshd restart
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_ed25519.pub nutzer05@notebook06
oder von Hand:
ssh nutzer05@notebook06 'mkdir -m 700 ~/.ssh' ssh nutzer05@notebook06 'cat >> .ssh/authorized_keys' < ~/.ssh/id_ed25519.pub ssh nutzer05@notebook06 'chmod 600 .ssh/authorized_keys'
UsePAM no PasswordAuthentication no
Alternativ (CentOS 7)
UsePAM yes ChallengeResponseAuthentication no PasswordAuthentication no
ssh -t
systemctl restart ssh.service
Schlüssel dem ssh-agent
hinzufügen:
ssh-add .ssh/id_rsa
Prüfen, welche Schlüssel der agent kennt:
ssh-add -l
Problem: die Datei ~/.ssh/authorized_keys
gehört dem Nutzer, den man einschränken möchte. Mögliche Lösung: AuthorizedKeysFile, AuthorizedKeysCommand und AuthorizedKeysCommandUser
restrict,command="/usr/bin/who" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHBqUtiLsRTLKquoVXKwhrPRD92CzaN9EOkVEfWoHfdC nutzer26@notebook26
… Match User nutzer12 ForceCommand /usr/bin/who
ssh -v nutzer06@notebook06 ssh -vv nutzer06@notebook06
+--------+ +------------+ +------------+ | ssh | | Hop Server | | server | | client | _ _ _ ssh _ _ _ | notebook01 | | notebook02 | | | ================ssh========tunnel============> | | +--------+ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ +------------+ +------------+
centos 7.4, debian 9, ubuntu 18.04: (ab OpenSSH-Version 7.3)
ssh -J notebook01.linuxhotel.de notebook02.linuxhotel.de
mit einer ~/.ssh/config
reduziert sich das zu:
Host notebook02 Hostname notebook02.linuxhotel.de ProxyJump notebook01.linuxhotel.de
ssh notebook02
Bei älteren SSH-Versionen:
centos 7, debian 8, ubuntu 16.04:
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 noch ä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
restrict,port-forwarding ssh-rsa AAAAB3NzaC1yc2EAXXXXXXXXXXXXXXXXXXXXXXXXX
ssh -A notebook17 ssh notebook07
besser, mit Konfigdatei:
Host notebook17 ForwardAgent yes IdentityFile ~/.ssh/id_rsa IdentitiesOnly yes
Sockets zu den ssh-agents anzeigen:
ls -ld /tmp/ssh-*/agent*
root kann den Socket für das Agent-Forwarding mitnutzen: 4)
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)"
Weitere Diskussion auch: diesen Link
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>
z.B. für Firefox:
ssh -D 1080 <Zielrechner>
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
.