SSH Agent
Contents
SSH Agent
Doobees Methode und Skript
Mit dem ssh-agent kann man seinen RSA Key im Speicher halten und spart sich somit das staendige Eintippen der Passphrase. Das ist natuerlich ein Sicherheitsrisiko, aber kein groesseres, als wenn man SSH nicht benutzt, weil es zu unkomfortabel ist.
# ssh-agent starten $ eval `ssh-agent` # key in den agent laden $ ssh-add Need passphrase for /Users?/drt/.ssh/identity Enter passphrase for drt@malcolm: Identity added: /Users?/drt/.ssh/identity (drt@malcolm) # munter ssh nutzen $ ssh user@host.org
Ein kleines Script, das dafuer sorgt, dass der ssh-agent quer durch alle Fenster und Konsolen funktioniert.
#!/bin/sh # This script is intended to reside in your ~/.ssh directory (don't # forget to 'chmod 700'), and be included in your shell init script. # It works by checking for a working ssh agent, otherwise it starts one # and requests the passphrase. # # For bash and ksh users: # include the following in your ~/.bashrc or ~/.kshrc or ~/.profile # . $HOME/.ssh/setup # Enable this if using you have GNOME and the following program. #SSH_ASKPASS=/usr/libexec/ssh/gnome-ssh-askpass #export SSH_ASKPASS SSH_ENV=$HOME/.ssh/environment.`hostname` function start_agent { echo "Initialising new Secure Shell agent..." ssh-agent -s | head -2 > ${SSH_ENV} chmod 600 ${SSH_ENV} . ${SSH_ENV} > /dev/null #ssh-add < /dev/null } # Source SSH settings, if applicable if [ -f "${SSH_ENV}" ]; then . ${SSH_ENV} > /dev/null kill -0 ${SSH_AGENT_PID} 2>/dev/null || { start_agent; } else start_agent; fi
Richtig bequem ist es, wenn man den ssh-agent und ssh-add in seinem .xsession bzw. .xinitrc startet. Dann haben alle Prozesse in der X-Session Zugriff auf den Agenten. Bei einigen Systemen muß man OpenSSH?-askpass gesondert installieren. --HaNs
Ja, aber wenn man das vergessen hat und X nicht beenden will, oder kein X sondern Quarz oder Consolen oder sonstwas einsetzt, kann man obiges Skript in seine .profile einbauen und man hat den gleichen Effekt. Einmal ssh-add eingeben und das wirkt sich auf alle Shells aus. BTW: HaNs hat mich vor geraumer Zeit in die Kunst der ssh-agent Nutzung eingeführt) --DoobeeRTzeck
Man kann sich dann noch Gedanken machen, ob man ssh-add nicht (zb mit -t 3600) einfach dazu ueberredet die Keys nur eine bestimmte Zeit lang im Speicher zu behalten. So kann man sich sicher sein, dass niemand der einen Tag nachdem man Keys benutzt hat die Workstation unter die Finger bekommt und munter lustig drauflos sich irgendwo einloggen kann... --Fd0 12:13, 17 Mar 2005 (CET)
Die keychain Methode
Einfach keychain installieren und in die .profile oder .bash_profile folgendes eintragen:
keychain ~/.ssh/key1 ~/.ssh/key2 . ~/.keychain/${HOSTNAME}-sh
--MM 01:07, 14 Oct 2004 (CEST)
Wobei man sich dabei sehr bewusst sein muss, das keychain ein enormes (~1500 Zeilen) sh Script ist, das bei 'jedem' start einer shell ausgefuehrt wird...
--Fd0 12:10, 17 Mar 2005 (CET)
Alternative
Warum nicht so? <source>
- in die .bashrc
if $(ssh-add -l) != *id_?sa* ; then
ssh-add -t 1h # Eine Stunde ohne pwd
fi </source>