Привет,
У меня есть Сервер Ubuntu, выполняющий сервер подверсии. Я выполняю клиент на той же машине через SSH, и я хотел бы, чтобы svn клиент помнил мой пароль, но не сохранил его как простой текст. При взгляде здесь я вижу два метода: брелок для ключей гнома и kwallet. Поскольку я не использую среду рабочего стола, я немного осторожен о попытке использовать один из них. Какие-либо предложения? Это было бы в порядке (или даже работало бы) использовать одно из этих двух приложений, которые я упомянул?
TIA
Можно выполнить Gnome-keyring или Kwallet на удаленной машине. Каждый приезжает в два компонента, демона и GUI.
Можно запустить приложение GUI на удаленной машине при выполнении ssh с X передачами. Просто, потому что это - машина “сервера”, не означает, что Вы не можете установить приложения GUI на нем. Не имеет значения, выполняете ли Вы соответствующую настольную среду или нет, для приложений не нужна определенная настольная среда для выполнения.
Можно управлять Kwallet на командной строке через qdbus
, хотя это не хорошая идея в этом конкретном случае, потому что необходимо было бы записать пароль в открытом тексте на командной строке, и это может быть отслежено другими пользователями. См. также этот ответ SU.
Существует привязка Python и для Gnome-keyring и для Kwallet (пакеты python-keyring-gnome
и python-keyring-kwallet
); Вы могли записать крошечный сценарий Python для управления ими. На самом деле уже существует один для брелока для ключей Gnome: gkeyring.
Если Ваш пароль брелока для ключей совпадает с Вашим паролем входа в систему, можно установить libpam-keyring
и Ваш брелок для ключей будет автоматически разблокирован, когда Вы войдете в систему. Однако это требует входа в систему с паролем, а не парой ключей.
При выполнении 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 &
Это может быть автоматизировано с маленькими сценариями оболочки на каждой стороне и a RemoteForward
строка в ~/.ssh/config
. В теории необходимо затем смочь получить доступ к брелоку для ключей гнома от удаленной машины. Однако я пытался получить доступ к нему с морским коньком, и это даже не пыталось соединиться с $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
Этот метод имеет мое предпочтение по нескольким причинам:
gpg шифруют файл с паролем в, - но затем Вам будет нужен пароль для того (и не теряйте закрытый ключ!).
Я предполагаю, что Вы могли зарегистрироваться в svn закрытый ключ, а также Вам все еще будет нужен пароль для использования его, но эта целая установка кажется немного нечетной.
почему необходимо сделать это?