Pull to refresh

Настраиваем URL Overrides в Keepass2

Configuring Linux *System administration *IT Infrastructure **nix *

Наверное все уже и так знают, что всегда хорошо иметь большой и сложный пароль. Многие так же знают про менеждеры паролей и как удобно, а главное безопасно можно хранить в них информацию.


По специфике моей работы мне часто приходится записывать и хранить большое количество паролей и другой конфиденциальной информации, поэтому я пользуюсь Keepass2 — менеджером паролей со свободной лицензией. Я не стану рассказывать о его возможностях и преимуществах перед другими, все это и так уже обсуждалось не раз. Если кто хочет познакомиться подробнее, вот несколько ссылок: wiki, обзорная статья, сравнения с другими: 1 2.
Вместо этого я хотел бы рассказать об одной его интересной функции:


Функция называется "URL Overrides", и представляет ссобой возможность запускать ассоциированные с записями программы и передавать им данные для аутентификации прямо из Keepass'а.


Например, вы можете хранить в keepass'е список учеток для подключения к удаленному серверу, а в определенный момент выбрать нужную и простым нажатием Ctrl+U, запустить клиент удаленного подключения, и моментально получить доступ к вашему серверу.
Это очень удобно, так как все логины и пароли не хранятся абы где, а надежно зашифрованны в вашей базе keepass и передаются программе-клиенту только в момент подключения.


Идея состоит в том, что бы использовать Keepass как единую точку входа на все удаленные сервера.


Как это работает? (GIF 2.4M)

Должен признаться, изначально я планировал написать статью только про настройку keepas на Linux, но по ходу написания накопилось достаточно материала и для Windows-пользователей.
Решил не обделять большую часть пользователей более популярной ОС столь занятным материалом.
Для каждого протокола я указал комманды работающие как под windows так и под linux


Итак приступим:


Создание записей


Для того чтобы keepass знал к какому протоколу соответствует ваша запись, вам следует использовать ссылки вида rdp://server, ssh://server, ftp://server


Настройка Keepass2


Для того чтобы keepass знал какие и как именно нужно запускать программы для этих протоколов, вам нужно настроить обработчик ссылок.
Для этого перейдем в Tools --> Options --> Integraion --> URL Overrides... и настроим протоколы:


SSH


[windows] PuTTY


  • Scheme: ssh
  • Command:
    cmd://"{ENV_PROGRAMFILES_X86}\PuTTY\putty.exe" -ssh "{USERNAME}@{URL:HOST}" -P {URL:PORT} -pw "{PASSWORD}"

[linux] OpenSSH Client


  • Scheme: ssh
  • Command:


    cmd://xterm -e sshpass -p {PASSWORD} ssh -o StrictHostKeyChecking=no {USERNAME}@{BASE:RMVSCM}

    Более безопасный вариант:


    cmd://bash -c 'FILE=$(mktemp) && chmod 600 $FILE && echo {PASSWORD} > $FILE ; xterm -e sshpass -f $FILE ssh -o StrictHostKeyChecking=no {USERNAME}@{BASE:RMVSCM}; rm -f $FILE'


Вам так же нужно установить пакет sshpass
Вместо xterm можете подставить ваш любимый эмулятор терминала


RDP


[windows] MSTSC


  • Scheme: rdp
  • Command:
    cmd://cmd /c "cmdkey /generic:TERMSRV/{URL:HOST} /user:{USERNAME} /pass:{PASSWORD} && mstsc /v:{BASE:RMVSCM} && cmdkey /delete:TERMSRV/{URL:HOST}"

За решение спасибо Valiant с bitcollectors.com и DeWhite с habrahabr.ru


[linux] Remmina


  • Scheme: rdp
  • Command:


    cmd://bash -c "FILE=/tmp/connect.remmina ; echo -en '[remmina]\nname={TITLE}\nprotocol=RDP\nserver={BASE:RMVSCM}\nscale=1\nviewmode=1\nusername={USERNAME}\npassword='`remmina-encode-password.py {PASSWORD}` > $FILE ; remmina -c $FILE ; rm -f $FILE"

    Более безопасный вариант:


    cmd://bash -c "export DIR=/tmp/remmina; mkdir -p $DIR; chmod 700 $DIR; export FILE=$(mktemp -p $DIR XXXXXXXXXX --suffix=.remmina); echo -e '[remmina]\nname={TITLE}\nprotocol=RDP\nserver={BASE:RMVSCM}\nscale=1\nviewmode=1\nusername={USERNAME}\npassword='`remmina-encode-password.py {PASSWORD}` > $FILE ; nohup remmina -c $FILE &"

    так же нам понадобится установить небольшой вспомогательный скрипт:


    curl -o /usr/local/bin/remmina-encode-password.py https://raw.githubusercontent.com/kvaps/keepass2-url-overriddes/master/remmina/remmina-encode-password.py
    chmod +x /usr/local/bin/remmina-encode-password.py


VNC


[windows] RealVNC


  • Scheme: vnc
  • Command:
    cmd://java -jar "{ENV_PROGRAMFILES}\tightvnc-jviewer.jar" -user="{USERNAME}" -password="{PASSWORD}" {BASE:RMVSCM}

Сохраните tightvnc-jviewer.jar в C:\Program Files\tightvnc-jviewer.jar.


[linux] Remmina


  • Scheme: vnc
  • Command:


    cmd://bash -c "FILE=/tmp/connect.remmina ; echo -en '[remmina]\nname={TITLE}\nprotocol=VNC\nserver={BASE:RMVSCM}\nscale=1\nviewmode=1\nusername={USERNAME}\npassword='`remmina-encode-password.py {PASSWORD}` > $FILE ; remmina -c $FILE ; rm -f $FILE"

    Более безопасный вариант:


    cmd://bash -c "export DIR=/tmp/remmina; mkdir -p $DIR; chmod 700 $DIR; export FILE=$(mktemp -p $DIR XXXXXXXXXX --suffix=.remmina); echo -e '[remmina]\nname={TITLE}\nprotocol=VNC\nserver={BASE:RMVSCM}\nscale=1\nviewmode=1\nusername={USERNAME}\npassword='`remmina-encode-password.py {PASSWORD}` > $FILE ; nohup remmina -c $FILE &"

    Нам все так же требуется небольшой вспомогательный скрипт, про который я писал выше


    curl -o /usr/local/bin/remmina-encode-password.py https://raw.githubusercontent.com/kvaps/keepass2-url-overriddes/master/remmina/remmina-encode-password.py
    chmod +x /usr/local/bin/remmina-encode-password.py


SAMBA


[windows] Explorer


  • Scheme: smb
  • Command:
    cmd://cmd /c "net use "{BASE:RMVSCM}" /user:"{USERNAME}" "{PASSWORD}" && start \\{BASE:RMVSCM}"

[linux] Nautilus / Thunar / Dolphin


  • Scheme: smb
  • Command:


    cmd://bash -c "echo -e '\n{PASSWORD}' | gvfs-mount 'smb://{USERNAME}@{BASE:RMVSCM}' ; nautilus 'smb://{USERNAME}@{BASE:RMVSCM}'"

    Более безопасный вариант:


    cmd://bash -c "echo -e '\n{PASSWORD}' | gvfs-mount 'smb://{USERNAME}@{BASE:RMVSCM}' ; nohup nautilus 'smb://{USERNAME}@{BASE:RMVSCM}' &"

    Для Thunar и Dolphin команда будет такая же, достаточно заменить nautilus на thunar или dolphin.



FTP


[windows] FileZilla FTP Client


  • Scheme: ftp
  • Command:
    cmd://"{ENV_PROGRAMFILES_X86}\FileZilla FTP Client\filezilla.exe" 'ftp://{USERNAME}:{PASSWORD}@{BASE:RMVSCM}'

[windows] Windows Explorer


  • Scheme: ftp
  • Command:
    cmd://"explorer.exe" 'ftp://{USERNAME}:{PASSWORD}@{BASE:RMVSCM}'

[linux] FileZilla FTP Client


  • Scheme: ftp
  • Command:
    cmd://filezilla 'ftp://{USERNAME}:{PASSWORD}@{BASE:RMVSCM}'

[linux] Nautilus / Thunar / Dolphin


  • Scheme: smb
  • Command:


    cmd://bash -c "echo -e '\n{PASSWORD}' | gvfs-mount 'ftp://{USERNAME}@{BASE:RMVSCM}' ; nautilus 'ftp://{USERNAME}@{BASE:RMVSCM}'"

    Более безопасный вариант:


    cmd://bash -c "echo -e '\n{PASSWORD}' | gvfs-mount 'ftp://{USERNAME}@{BASE:RMVSCM}' ; nohup nautilus 'ftp://{USERNAME}@{BASE:RMVSCM}' &"

    Для Thunar и Dolphin команда будет такая же, достаточно заменить nautilus на thunar или dolphin.



TeamViewer


[windows] TeamViewer


  • Scheme: teamviewer
  • Command:
    cmd://"{ENV_PROGRAMFILES_X86}\TeamViewer\TeamViewer.exe" -i "{USERNAME}" --Password "{PASSWORD}"

[linux] TeamViewer


  • Scheme: teamviewer
  • Command:
    cmd://teamviewer -i "{USERNAME}" --Password "{PASSWORD}"

Winbox


[windows] Winbox


  • Scheme: winbox
  • Command:
    cmd://{ENV_PROGRAMFILES_X86}\winbox.exe '{BASE:RMVSCM}' '{USERNAME}' '{PASSWORD}'

Сохраните winbox.exe в C:\Program Files (x86)\winbox.exe.


[linux] Winbox


  • Scheme: winbox
  • Command:
    cmd://winbox '{BASE:RMVSCM}' '{USERNAME}' '{PASSWORD}'

Я использую пакет winbox из AUR.


Cisco


[windows] PuTTY


  • Scheme: cisco
  • Command:


    cmd://{ENV_PROGRAMFILES_X86}\scriptsdir\Connector_Cisco.vbs "{S:lan}" "{USERNAME}" "{PASSWORD}" "{S:enable}"

    Так же скачиваем сам Connector_Cisco.vbs
    И сохраняем его по пути: C:\Program Files (x86)\Connector_Cisco.vbs


    Решение и скрипт любезно предоставил therb1 с habrahabr.ru



Заключение


Примеров я думаю предостаточно. На этом пожалуй все.
Теперь, выбрав нужную запись и нажав Ctrl+U, вы сразу подключитесь куда нужно. И вам не придется сохранять пароли где-то еще.
Для более экзотических случаев вы всегда можете написать свой обработчик, вам лишь достаточно узнать параметры запуска нужной вам программы и отразить их в команде.


Пара ссылок по теме:



Если есть какие-то пожелания/дополнения пишите их в коментарии или на Github.
Благодарю за внимание.

Tags:
Hubs:
Total votes 22: ↑21 and ↓1 +20
Views 38K
Comments Comments 45