Wikipedia makalesi muhtemelen en iyi açıklamaya sahiptir:
Sunucuya yapılan doğrulama, sorgulama yanıt kimlik doğrulamasına dayanır. ssh sunucuya bir kullanıcı adı ve bir anahtar isteği ile bağlanır. Ssh arka plan programı isteği alır ve kimlik doğrulama dosyasında depolanan ortak anahtara dayanarak bir meydan okuma gönderir. ssh, bir anahtar yanıtı oluşturmak için özel anahtarı kullanır ve bağlantının diğer ucunda bulunan bekleyen sshd'ye gönderir. Özel anahtarı kendisi göndermez. Ssh arka plan programı, önemli yanıtı doğrular ve eğer geçerliyse, sisteme erişim izni verir. ssh-agent bunu, SSH bağlantılarını dinleyen bir soket oluşturarak kolaylaştırır. Kullanıcı basitçe ssh-agent'ı başlatır, tuşlarını nasıl bulacağını söyler (varsayılan konumda değilse), kullanılacak her anahtarın parolasını tek seferde girer,
Yine wikipedia makalesinden sözlü olarak:
... ssh-agent bir soket oluşturur ve ardından bağlantıları ssh'den kontrol eder. Bu sokete bağlanabilecek herkesin de ssh-agent'a erişimi vardır. İzinler normal bir Linux veya Unix sisteminde olduğu gibi ayarlanır. Aracı başladığında, / tmp içinde kısıtlayıcı izinlere sahip yeni bir dizin oluşturur. Soket klasörde bulunur.
Tipik olarak bir sistem veya kullanıcının rc dosyaları birinde soktu gibi $HOME/.bashrc
ya $HOME/.profile
(bash kabuklar için) ortam değişkenleri böylece ssh-agent
tamamen çevreye dahil olsun ayarlayın.
Fedora 14 sistemimde, X11 alt sisteminin bir parçası olarak oldukça erken başladı. Bu dosyada /etc/X11/xinit/xinitrc-common
:
# Prefix launch of session with ssh-agent if available and not already running.
SSH_AGENT=
if [ -z "$SSH_AGENT_PID" ] && [ -x /usr/bin/ssh-agent ]; then
if [ "x$TMPDIR" != "x" ]; then
SSH_AGENT="/usr/bin/ssh-agent /bin/env TMPDIR=$TMPDIR"
else
SSH_AGENT="/usr/bin/ssh-agent"
fi
fi
Değişken $SSH_AGENT
daha sonra, buradaki gibi diğer X11 başlangıç komut dosyalarında kullanılır /etc/X11/xinit/Xclients
:
exec -l $SHELL -c "$SSH_AGENT $XCLIENTS_D/Xclients.$1.sh"
Buraya dahil edilerek, aşağıdaki ortam değişkenleri bir ana kabuğun parçası olarak ayarlanmaktadır, bu nedenle tüm çatallı çocukların da bunlara sahip olması gerekir, örneğin:
SSH_AUTH_SOCK=/tmp/ssh-PspRF18958/agent.18958; export SSH_AUTH_SOCK;
SSH_AGENT_PID=18959; export SSH_AGENT_PID;
Bunun biraz daha fazla karmaşıklığı var ama kısaca, temelde olan şey bu ssh-agent
.
Örneğin GNOME'da, ssh-agent
aslında kullanıcı başına bir başlangıç uygulaması olarak başlatılır:
TL; DR
Alt satırda, ssh-agent
ssh anahtarlarınız gerektiğinde parolalarıyla (bir taneleri olduğunu varsayarsak) yalnızca bir kez açmanız gerekecek ve ondan sonra bellekteki şifresi çözülmüş formda (RAM) kullanmanız gerekecek.