• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

passwortfreies Einloggen mit ssh

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Der Anfang ist bereits von hilarious wunderbar an dieser Stelle erklärt worden.

Dort meint er aber auch:
Wenn Du Deinem Schlüssel eine »Passphrase« verpasst hast, wirst Du allerdings diese jetzt jedesmal eingeben müssen (auch dafür gibt es Automatismen, aber das würde zu weit führen).

Da ich denke, daß man auf jeden Fall eine Passphrase verwenden sollte, und ich das auch schon seit Jahr & Tag so mache, mnöchte ich hier kurz meine Lösung (die ich auch nur irgendwann mal im Netz gefunden habe) vorstellen.

Dazu wird in die Startdatei des Terminals (.profile bei der bash) folgendes mit aufgenommen:
Code:
#!/bin/sh

SSH_AGENT='/usr/bin/ssh-agent -s'
SSH_ADD=/usr/bin/ssh-add
KILL=/bin/kill
SSH_AGENT_INFO=~/.ssh-agent-info
SSH_DIR=~/.ssh
CHMOD=/bin/chmod
TOUCH=/usr/bin/touch
#KEYS='identity id_dsa id_rsa'

ssh_prime () {
	$TOUCH $SSH_AGENT_INFO
	$CHMOD 600 $SSH_AGENT_INFO
	$SSH_AGENT > $SSH_AGENT_INFO
	. $SSH_AGENT_INFO
	if [ -n "$KEYS" ]
	then
		for i in $KEYS
		do
			$SSH_ADD $SSH_DIR/$i
		done
	else
		$SSH_ADD
	fi
}

if test -f $SSH_AGENT_INFO
then
	. $SSH_AGENT_INFO >/dev/null
	if [ -n "$SSH_AGENT_PID" ]
	then
		if ! ( $KILL -INFO "$SSH_AGENT_PID" 2> /dev/null ) || ! ( [ -S $SSH_AUTH_SOCK ] || [ -p $SSH_AUTH_SOCK ] )
		then
			echo leftover $SSH_AGENT_INFO
			ssh_prime
		fi
	else
		echo wrong $SSH_AGENT_INFO
		ssh_prime
	fi
else
	echo No $SSH_AGENT_INFO
	ssh_prime
fi

. $SSH_AGENT_INFO  >/dev/null

Wenn man nun das erstemal nach dem Einloggen ein Terminal startet, wird man nach der Passphrase gefragt. Von da ab, während der gesamten "Sitzung" nicht mehr. Passwortfreier Zugang ist dann ab sofort möglich.

Das ganze funktioniert vereinfacht gesagt dadurch, daß der ssh-agent sich die benötigten Daten merkt und dem ssh zur Verfügung stellt.
 
  • Like
Reaktionen: Hilarious
Sehr schön zusammengestellt und gut lesbar! So mutt dat sein... :D
Tipp: Oben kann man bewerten, ob man den Beitrag gut findet, und man kann skeeve positives Karma geben. Aber das weiß ja jeder, oder? :)