Ich bin mir nicht so 100%ig sicher, dein Problem genau erfasst zu haben.
Ich habe das SSH-Problem so gelöst:
1) Habe ich ein Shell-Skript „start-ssha"
#!/bin/zsh
killall ssh-agent
ssh-agent -s | head -n2 > ~/files/config/zsh/sshagent
source ~/files/config/zsh/sshagent
ssh-add ~/.ssh/id_dsa
(ich muss erwähnen, dass sich meine Konfiguration der Z-Shell über mehrere Dateien erstreckt, die sich in ~/files/config/zsh befinden. Natürlich ist jeder andere Pfad auch gut). Das stoppt einen Agent, falls er läuft, startet ihn neu, schreibt die Konfigurationsdatei, die dann von der Z-Shell gelesen werden kann.
2) in der ~/.zshrc steht außerdem noch folgendes
test -e ~/files/config/zsh/sshagent && source ~/files/config/zsh/sshagent
Dadurch lädt eigentlich jede Shell-Instanz auch die SSH-Parameter. Das erste Skript steht dann einfach in der ~/.xinitrc und wird beim starten des Computers ausgeführt.
Die Frage ist noch, wie das Passwort eingegeben wird. Wenn ssh-add nicht mit einem Terminal verbunden ist (und das ist es bei der automatischen Ausführung meistens nicht), dann schaut es sich die Variable $SSH_ASKPASS an. Wenn die zum Beispiel, auf /usr/lib/openssh/x11-ssh-askpass steht, dann poppt ein lustiges Fenster auf, in das du dein Passwort eingeben kannst. Alternativ dazu könntest du auch einfach ein Shell-Skript schreiben mit:
echo "meinSuperGeheimesPasswort"
und als $SSH_ASKPASS der Pfad deines Skriptes eingeben. Ist natürlich in gewissen Maßen ein Sicherheits-Risiko, aber na ja.