Как автоматически добавить защищенный ключ в ssh-agent при запуске?

Я использую GDM для запуска WME через.xinitrc. Мне нравится потрясающая простота использования и целостность гномов, и до сих пор большинство программ запуска работают нормально, но я борюсь с ssh-agent. При запуске gnome мой защищенный паролем id_rsa автоматически добавляется в ssh-agent при запуске.. Я пытаюсь добиться того же самого с моим.xinitrc, запущенным awesome wm.

Мой.xinitrc:

/usr/libexec/at-spi-registryd &
/usr/libexec/gdu-notification-daemon &
gnome-screensaver &
/usr/libexec/vino-server --sm-disable &
/usr/bin/gnome-keyring-daemon --start --components=keyring &
/usr/bin/gnome-keyring-daemon --start --components=secrets &
/usr/bin/gnome-keyring-daemon --start --components=ssh &
/usr/bin/gnome-keyring-daemon --start --components=pkcs11 &
/usr/bin/gnome-keyring-daemon --start --components=gpg &
/usr/libexec/polkit-gnome-authentication-agent-1 &
/usr/libexec/evolution/2.32/evolution-alarm-notify &
/usr/libexec/gnome-settings-daemon &
gnome-power-manager &
gsettings-data-convert &
gnome-volume-control-applet &
nm-applet --sm-disable &
exec /usr/bin/ck-launch-session /usr/bin/dbus-launch --exit-with-session /usr/bin/ssh-agent -- awesome

Как Гном справляется с этим?

2 ответа

Решение

GNOME хранит ваши ключевые пароли SSH в GNOME Keyring, который (login keyring) разблокируется паролем для входа pam_gnome_keyring:

#%PAM-1.0
auth           ...
auth           ...
auth           optional        pam_gnome_keyring.so

session        ...
session        ...
session        optional        pam_gnome_keyring.so auto_start

Тем не менее, ваша текущая настройка не будет работать с этим, так как вы начинаете ssh-agent на последнем шаге перезаписываем любые переменные окружения, которые могли быть установлены gnome-keyring. Удалить ssh-agent и попробуйте добавить это после всех процессов-брелоков для ключей:

eval $(gnome-keyring-daemon --start)

Имейте в виду также, что gnome-keyring-daemon публикует несколько переменных среды через DBus, которые затем читаются gnome-shell, чего не делает Awesome. Это и вы запускаете сессионную шину DBus после запуска всех демонов, поэтому они могут вообще не подключиться к вашему сеансу.

Еще одна вещь: многие из демонов должны быть запущены в сеансе ConsoleKit - например, агент аутентификации PolicyKit. Вам повезет больше, если вы замените всю свою ~/.xinitrc скрипт с:

exec ck-launch-session dbus-launch --exit-with-session ~/.xinitrc-session

затем используйте ~/.xinitrc-session запустить остальную часть GNOME.


Вы можете пойти более легким путем. Используйте стандарт ck-launch-session dbus-launch --exit-with-session gnome-session и просто скажите менеджеру сеансов GNOME запустить Awesome в качестве менеджера окон. Следуйте официальным инструкциям.

Сокращенная форма для GNOME 2:

mkdir -p ~/.local/share/applications/
cp /usr/share/applications/awesome.desktop ~/.local/share/applications/
cat >> ~/.local/share/applications/awesome.desktop
X-GNOME-WMName=Awesome
X-GNOME-WMSettingsModule=awesome
X-GNOME-Autostart-Phase=WindowManager;Panel
X-GNOME-Provides=windowmanager;panel
X-GNOME-Autostart-Notify=true
[Ctrl-D]
gconftool-2 --set /desktop/gnome/session/required_components/windowmanager --type string awesome

Есть ли какая-то особая причина не использовать pam_ssh? Я нахожу это довольно удобным.

Другие вопросы по тегам