Якщо ви локально використовуєте 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 keyring. Однак я намагався отримати доступ до нього з морським конем, і він навіть не намагався підключитися до нього $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.