Если вы используете Gnome-keyring или Kwallet локально, вы можете переслать их через ssh, немного поработав. Они используют сокеты Unix, которые ssh не может пересылать. Но вы можете использовать socat
ретрансляцию Unix-сокетов на TCP-сокеты локально и наоборот на удаленной машине:
while true; do socat TCP-LISTEN:22007 UNIX-CONNECT:"$GNOME_KEYRING_SOCKET"; done &
ssh -R22007:localhost:22007 remote.example.com
export GNOME_KEYRING_SOCKET="$HOME/.gnome-keyring-socket"
while true; do socat UNIX-LISTEN:"$GNOME_KEYRING_SOCKET" TCP4:localhost:22007; done &
Это можно автоматизировать с помощью небольших сценариев оболочки на каждой стороне и RemoteForward
строки ~/.ssh/config
. Теоретически, вы сможете получить доступ к связке ключей gnome с удаленного компьютера. Тем не менее, я попытался получить к нему доступ с морским коньком, и он даже не пытался подключиться $GNOME_KEYRING_SOCKET
; Я не знаю почему, и я не знаю, сможет ли svn получить доступ к связке ключей.
Вы можете хранить свой пароль SVN в зашифрованной файловой системе. Есть несколько вариантов ; Я думаю, что самый простой способ начать это encfs
. Начальная настройка:
sudo aptitude install encfs
encfs ~/.passwords.encrypted ~/.passwords
mv ~/.subversion/auth ~/.passwords/svn-auth
ln -s ../.passwords/svn-auth ~/.subversion/auth
Нормальный рабочий процесс:
encfs ~/.passwords.encrypted ~/.passwords
... work ...
fusermount -u ~/.passwords
Этот метод имеет мое предпочтение по нескольким причинам:
- И начальная настройка, и обычный рабочий процесс очень просты.
- Неважно, откуда вы входите, в частности вам не нужен локальный X-сервер и использовать X-переадресацию через ssh.
- Зашифрованная файловая система более универсальна, чем набор ключей (хотя это менее удобно для использования набора ключей, но в случае svn это не имеет значения).
- Единственный не повсеместный инструмент, который вам нужен - это encfs (для которого требуется FUSE), и он упакован для Ubuntu.