• Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> Klick
  • November - das bedeutet oftmals Herbstblues, grauer Himmel, Tristesse und Wetter, bei dem man gern im Warmen bleibt. Aber nur oftmals! Wir fordern Euch gern auf, gegen den Herbstblues anzukämpfen und hoffen, dabei hilft Euch unser aktuelles Monatsthema. Neugierig geworden? --> 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? :)