Как ввести пароль для набора ключей по умолчанию через командную строку?

12

Есть ли способ ввести пароль для ключей по умолчанию с помощью командной строки?

Например:

У вас есть удаленная установка Ubuntu 10.10, которая настроена на автоматический вход в систему. Вы не хотите удалить пароль для ключей.

Хорошо, система загружается и автоматически входит в систему, а затем запрашивает пароль для связки ключей. Теперь вы можете создавать ssh-соединения, но не можете использовать удаленный рабочий стол.

Что вы можете сделать, чтобы ввести пароль для ключей на этом этапе?

Кроме того, чтобы лучше понять, это из удаленного соединения с использованием командной строки.

Jerkofalltrades
источник

Ответы:

10

Благодаря python-gnomekeyring это относительно просто:

python -c "import gnomekeyring;gnomekeyring.unlock_sync(None, 'my password');"

Или как правильный сценарий:

#!/usr/bin/env python
import gnomekeyring
gnomekeyring.unlock_sync(None, 'my password');

Я думаю, вам не нужно устанавливать пакет. Но это не помешает попробовать.


Имейте в виду, что хранение вашего пароля на жестком диске представляет огромную угрозу безопасности. Вы должны использовать это вместо этого:

#!/usr/bin/env python

import gnomekeyring
import getpass

gnomekeyring.unlock_sync(None, getpass.getpass('Password: '));

Вы можете сохранить этот скрипт, например, как unlock-keyring.pyи затем сделать следующее:

sudo mv unlock-keyring.py /usr/bin/unlock-keyring
sudo chmod a+x /usr/bin/unlock-keyring

С этого момента вы всегда можете просто ввести unlock-keyringи запросить пароль. Не делайте этого с версией, содержащей ваш пароль .

Вы можете заменить его Noneна свое имя, например 'session', если хотите разблокировать то, что не является значением по умолчанию.


Мне тяжело проверить это правильно, поэтому, пожалуйста, дайте мне знать, если это не сработает, и я сразу же посмотрю на это. Также дайте мне знать, если это работает :-)

Стефано Палаццо
источник
1
Этот пакет больше не поставляется с Ubuntu :(
Горе
Вот некоторая информация из libsecret (используется в новом gnome-keyring) man: "В libsecret вы можете разблокировать элементы напрямую, и в результате (с помощью демона gnome-keyring) разблокированная коллекция будет разблокирована. Больше невозможно передать пароль для разблокировки ключей. Они автоматически запрашиваются. "
горе
1

Это работает определенно!

После долгих проб и ошибок я обнаружил, что старый злющий пакет "pam-keyring" по-прежнему содержит "pam-keyring-tool", который вы можете использовать для разблокировки ключей из командной строки. Ubuntu вытащил инструмент из пакета после злющего релиза, возможно, из соображений безопасности ???

Это здесь:-

wget https://launchpad.net/ubuntu/+archive/primary/+files/pam-keyring_0.0.8.orig.tar.gz

распакуйте его куда хотите, затем сделайте:

./configure
make

Вы НЕ производите установку, потому что не хотите, чтобы она обновляла пакет в любой момент.

затем отредактируйте файл конфигурации входа в систему rc.local, чтобы он выглядел так:

sudo gedit /etc/rc.local 

exec echo ENTER_YOUR_PASSWORD_HERE | /PATH_TO_PAM_KEYRING_TOOL/pam-keyring-tool --keyring=login -u -s

exit 0

вуаля!

Мэтью Тофт
источник
1

Спасибо Стефано! От его ответа я оказался на полпути, но я обнаружил, что метод по умолчанию работает только при запуске скрипта python с локальной машины. Если вы работаете локально, у вас есть доступ к связке ключей Gnome. Я хотел иметь возможность запускать его скрипт через сеанс SSH, но продолжал получать «gnomekeyring.IOerror», потому что набор ключей не был доступен. После долгих поисков я нашел решение @ https://ask.fedoraproject.org/en/question/45246/error-communicating-with-gnome-keyring-daemon-in-ssh-session/

Чтобы перевести эту страницу на самую подходящую часть, применимую к этой ситуации, добавьте следующее в ваш скрипт .bashrc.

# Export $DBUS_SESSION_BUS_ADDRESS when connected via SSH to enable access
# to gnome-keyring-daemon.
if [[ -n $SSH_CLIENT ]]; then
    export $(cat /proc/$(pgrep "gnome-session" -u "$USER")/environ | grep -z "DBUS_SESSION_BUS_ADDRESS=")
fi

Ничего не стоит, что шаблон grep, представленный в ссылке, не работает для меня, поэтому тот, который у меня есть выше, немного отличается.

Роберт
источник
На Mint 17.2 мне пришлось сменить gnome-session на mate-session
frankster