ssh-agent bei der Anmeldung nur gestartet, wenn das Verzeichnis ~/.ssh existiert:mkdir -m 700 ~/.ssh
Dies ist eine alte Version des Dokuments!
Einloggen auf <Rechner> mit <Benutzer>:
ssh <Benutzer>@<Rechner>
In dem Zusammenhang ist die Nutzung von screen sehr hilfreich.
Dateien auf andere Rechner kopieren:
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*
service sshd restart
dpkg-reconfigure openssh-server
ssh-keygen -R server-name ssh-keygen -R IP-Adressse
Als Nutzer Schlüsselpaar erzeugen:
ssh-keygen -C "Kommentar"
Public-Key auf anderen Rechner übertragen:
ssh-copy-id -i .ssh/id_rsa.pub nutzer05@notebook05
oder alternativ:
cat .ssh/id_rsa.pub | ssh nutzer05@notebook05 "cat >> .ssh/authorized_keys" ssh nutzer05@notebook05 "mkdir -m 700 .ssh" ssh nutzer05@notebook05 "chmod 600 .ssh/authorized_keys"
/etc/ssh/sshd_config:
UsePAM no PasswordAuthentication no
Schlüssel dem ssh-agent hinzufügen:
ssh-add -i .ssh/id_dsa
Dem ssh-agent verfügbare Schlüssel anzeigen:
ssh-add -l
ssh -A nutzer17@notebook17 ssh -A nutzer07@notebook07
~/.ssh/config :
Host notebook01 Hostname notebook01.linuxhotel.de ForwardAgent yes IdentityFile ~/.ssh/id_rsa IdentitiesOnly yes Host notebook02 Hostname notebook02.linuxhotel.de ProxyCommand ssh -W %h:%p notebook01
ssh notebook02
Mit eingeschaltetem Agent-Forwarding sollte man nur vertrauenswürdige Server besuchen. root-Benutzer auf dem Server können während die Verbindung besteht den ssh-Agent „mitbenutzen“. Dazu sucht root nach
-t ), -u ), -i ),sshd beginnt ( -c )PIDS="$(lsof -a -i -c sshd -u nutzer05 -t)"
Weiter sucht er nach dazu passenden Socket-Dateien ( /tmp/ssh-*/agent.$pid ), und speichert die letzte ( tail -n 1 ) in der Variablen SSH_AUTH_SOCK
export SSH_AUTH_SOCK=$(for pid in $PIDS; do ls /tmp/ssh-*/agent.$pid; done 2>/dev/null | tail -n 1)
Auch ein ssh-agent auf dem client-Rechner kann ähnlich mitgenutzt werden:
export SSH_AGENT_PID=$(pgrep -u nutzer05 -x 'ssh-agent')
SSH_AUTH_SOCK=$(lsof -a -U -p $SSH_AGENT_PID -F n | tail -n 1)
export SSH_AUTH_SOCK=${SSH_AUTH_SOCK#n}
ssh nutzer07@notebook07
ssh -v nutzer06@notebook06 ssh -vv nutzer06@notebook06
ssh -L <lokaler Port>:<Zielrechner>:<Zielport> <Benutzer>@<ssh-Server>
oder
ssh -f -L 8080:www.linuxhotel.de:80 nutzer03@notebook03 curl localhost:8080
ssh -X <Benutzer>@<Rechner>
oder
ssh -f -X notebook09 xterm
Dazu muß in der Datei /etc/ssh/sshd_config des Servers folgender Eintrag vorhanden sein:
X11Forwarding yes
ssh -R <Port auf ssh-Server>:<Zielrechner>:<Zielport> <Benutzer>@<ssh-Server>
Dazu muß in der Datei /etc/ssh/sshd_config des Servers folgender Eintrag vorhanden sein:
GatewayPorts yes
für firefox, curl, …
ssh -f -D 1080 nutzer03@notebook09 curl --socks5 localhost:1080 www.linuxhotel.de
Dies ist nur ein Beispiel um zu zeigen, dass das geht. Eine modernere Variante ist die Funktion PermitTunnel von ssh zu nutzen.
pppd noauth nodetach pty "ssh root@notebook05 pppd idle 300 nodetach notty noauth" 192.168.2.1:192.168.2.2
PPP over SSH - Tunnel bauen mit Standartwerkzeugen
Die Lösung ist noch nicht ausreichend getestet und wahrscheinlich unvollständig.Hier sind die Bausteine, die ich gerade nutze:
pppd ssh sudo
Damit baue ich eine solche Verbindung:
Notebook –> PPP-over-SSH –> Router –> Netzwerk ( 172.16.240.0/24 )
/home/user/.ssh/authorized_keys:
command="/usr/bin/sudo /usr/sbin/pppd nodetach notty noauth 10.0.0.1:10.0.0.2" ssh-dss laj4flksa7dflkj ... ( der Schlüssel ) ...
Dieser Eintrag führt dazu, daß der sshd für den Benutzer „user“ den angegebenen Befehl ausführt, wenn der sich mit dem entsprechenden Schlüssel authentifiziert.
Mehr Informationen dazu unter man sshd, im Abschnitt „AUTHORIZED_KEYS FILE FORMAT“
/etc/sudoers, editieren mit dem Befehl visudo:
user router=NOPASSWD: /usr/sbin/pppd *
oder strenger:
user router=NOPASSWD: /usr/sbin/pppd nodetach notty noauth 10.0.0.1\:10.0.0.2
Dieser Eintrag führt dazu, daß die Benutzer „user“ und „andereruser“ auf dem Rechner „router“ den Befehl /usr/sbin/pppd mit den angegebenen Optionen mit root-Rechten ausführen dürfen.
/etc/sudoers, editieren mit dem Befehl visudo:
User_Alias PPP = user, andereruser PPP notebook=NOPASSWD: /usr/sbin/pppd * PPP notebook=NOPASSWD: /sbin/route add -net 172.16.240.0/24 gw 10.0.0.2
oder strenger:
User_Alias PPP = user, andereruser PPP notebook=NOPASSWD: /usr/sbin/pppd noauth nodetach persist demand connect /bin/true pty "ssh user@router" PPP notebook=NOPASSWD: /sbin/route add -net 172.16.240.0/24 gw 10.0.0.2
Dieser Eintrag führt dazu, daß die Benutzer „user“ und „andereruser“ auf
dem Rechner „notebook“ die Befehle /sbin/route und /usr/sbin/pppd mit
den angegebenen Optionen mit root-Rechten ausführen dürfen.
scponly: https://github.com/scponly/scponly
ssh-agent bei der Anmeldung nur gestartet, wenn das Verzeichnis ~/.ssh existiert:mkdir -m 700 ~/.ssh