8

Алло,

У меня есть Ubuntu Server, на котором работает сервер Subversion. Я запускаю клиент на той же машине через SSH, и я хотел бы, чтобы клиент svn запоминал мой пароль, но не сохранял его в виде открытого текста. Глядя здесь, я вижу два метода: gnome-keyring и kwallet. Поскольку я не использую менеджер рабочего стола, я немного осторожен в попытке использовать один из них. Какие-либо предложения? Было бы хорошо (или даже работать), чтобы использовать одно из двух приложений, которые я упомянул?

ТИА

2 ответа2

9
  1. Вы можете запустить Gnome-keyring или Kwallet на удаленной машине. Каждый состоит из двух компонентов: демона и графического интерфейса.

    • Вы можете запустить приложение с графическим интерфейсом на удаленном компьютере, если вы запускаете ssh с переадресацией X. Тот факт, что это «серверный» компьютер, не означает, что вы не можете устанавливать на него приложения с графическим интерфейсом. Неважно, используете ли вы соответствующую рабочую среду или нет, приложениям не требуется определенная рабочая среда.

    • Вы можете управлять Kwallet из командной строки через qdbus , хотя в данном конкретном случае это не очень хорошая идея, потому что вам придется писать пароль в виде открытого текста в командной строке, и другие пользователи могут отследить его. Смотрите также этот ответ SU.

    • Существует привязка к python для Gnome-keyring и Kwallet (пакеты python-keyring-gnome и python-keyring-kwallet); Вы могли бы написать крошечный скрипт на Python для управления ими. На самом деле для Gnome-keyring уже есть одна: gkeyring.

    • Если ваш пароль для ключей совпадает с паролем для входа в систему, вы можете установить libpam-keyring и ваш ключ будет автоматически разблокирован при входе в систему. Однако это требует входа в систему с паролем, а не парой ключей.

  2. Если вы используете 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 получить доступ к связке ключей.

  3. Вы можете хранить свой пароль 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.
0

gpg зашифровывает файл с паролем, но для этого вам понадобится фраза-пароль (и не теряйте закрытый ключ!).

Я полагаю, вы могли бы проверить svn закрытый ключ, а также вам понадобится фраза-пароль, чтобы использовать его, но вся эта настройка кажется немного странной.

зачем тебе это нужно?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .