Есть ли способ ввести пароль для набора ключей по умолчанию с помощью командной строки?
Например:
У вас есть удаленная установка Ubuntu 10.10, настроенная на автоматический вход в систему. Вы не хотите удалять пароль для связки ключей.
Хорошо, система загружается и автоматически входит в систему, а затем запрашивает пароль для связки ключей. Теперь вы можете создавать ssh-соединения, но не можете использовать удаленный рабочий стол.
Что вы можете сделать, чтобы ввести пароль для связки ключей в этот момент?
Кроме того, чтобы уточнить, это из удаленного соединения с использованием командной строки.
Спасибо Стефано! От его ответа я оказался на полпути, но я обнаружил, что метод по умолчанию работает только при запуске скрипта python с локальной машины. Если вы работаете локально, у вас есть доступ к связке ключей Gnome. Я хотел иметь возможность запускать его скрипт через сеанс SSH, но продолжал получать "gnomekeyring.IOerror", потому что набор ключей не был доступен. После долгих поисков я нашел решение @ https://ask.fedoraproject.org/en/question/45246/error-communicating-with-gnome-keyring-daemon-in-ssh-session/ [ 112]
Чтобы перевести эту страницу на самую подходящую часть, относящуюся к данной ситуации, добавьте следующее в ваш скрипт .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, представленный в ссылке, не работает для меня, поэтому тот, который у меня есть выше, немного отличается.
Благодаря 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'
, если вы хотите разблокировать тот, который не по умолчанию.
Мне тяжело проверить это должным образом, поэтому, пожалуйста, дайте мне знать, если это не сработает, и я сразу же посмотрю на это. Также дайте мне знать, если это работает: -)
Это определенно работает !!
После долгих проб и ошибок я обнаружил, что старый злющий пакет «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
эй presto!