Как автоматически добавить защищенный ключ в 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? Я нахожу это довольно удобным.