SSH Agent

From C4 Wiki
Revision as of 00:08, 14 October 2004 by Mario Manno (talk | contribs) (fix typo)
Jump to: navigation, search

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, dass 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
       ps ${SSH_AGENT_PID}  /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

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)

Links