SSH Agent

From C4 Wiki
Jump to: navigation, search

SSH Agent[edit]

Doobees Methode und Skript[edit]

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[edit]

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[edit]

Warum nicht so? <source lang="bash">

  1. in die .bashrc

if $(ssh-add -l) != *id_?sa* ; then

   ssh-add -t 1h  # Eine Stunde ohne pwd

fi </source>

Links[edit]