Dies ist eine alte Version des Dokuments!
Einloggen auf <Rechner> mit <Benutzer>: 1)
ssh <Benutzer>@<Rechner>
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>:<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
Als Nutzer Schlüsselpaar erzeugen:
ssh-keygen -d -C "Kommentar"
Public-Key auf anderen Rechner übertragen:
ssh-copy-id -i .ssh/id_dsa.pub nutzer05@notebook05
oder alternativ:
cat .ssh/id_dsa.pub | ssh nutzer05@notebook05 "cat >> .ssh/authorized_keys" ssh nutzer05@notebook05 "chmod 400 .ssh/authorized_keys"
hängende ssh-Verbindung beenden:
~.
ssh-Verbindung pausieren:
~Strg+z
/etc/ssh/sshd_config
:
UsePAM no PasswordAuthentication no
Schlüssel dem ssh-agent
hinzufügen:
ssh-add -i .ssh/id_dsa
Bei SuSE 11.0 wird der ssh-agent
bei der Anmeldung nur gestartet, wenn das Verzeichnis ~/.ssh
existiert:
mkdir -m 700 ~/.ssh
ssh -A nutzer17@notebook17 ssh -A nutzer07@notebook07
nc
( netcat ) muss installiert sein.
~/.ssh/config
:
Host notebook01 Hostname notebook01.linuxhotel.de ForwardAgent yes Host notebook02 Hostname notebook02.linuxhotel.de ProxyCommand ssh -q notebook01 nc -q0 notebook02 22
ssh notebook02
Befehl per Skript auf notebook16 ausführen, notebook16 ist nur via notebook15 zu erreichen:
ssh-agent bash -c "ssh-add .ssh/id_dsa; ssh -A nutzer15@notebook15 ssh nutzer16@notebook16 ls"
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
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>
Dies ist nur ein Beispiel um zu zeigen das das geht. In der Praxis würde ich immer OpenVPN oder ähnliche Lösungen verwenden.
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: http://www.sublimation.org/scponly/