Я уже больше года ем кактус использую на домашнем компе Ubuntu. Много раз хотелось написать о том, какая это глючная система из палок и верёвок, но времени было жалко. Впрочем сегодня рассказ не про то, как в Ubuntu все плохо, хотя то что мне нужно в итоге всё равно не работает :(
Недавно я обнаружил, что в Ubuntu 14 имеется свежий OpenSSH - 6.6.1, чем был приятно удивлён - в большинстве дистрибутивов Linux есть традиция держать в пакетах софт N-летней давности, в Ubuntu пакеты свежее, чем в среднем по больнице, но всё равно после выхода свежей версии приходятся долго ждать пока она появится в пакетах. Свежий OpenSSH примечателен тем, что там есть поддержка SSH-ключиков с KDF. Нужно, это для защиты от перебора пароля, которым этот ключик зашифрован. Подробнее о новом формате ключей можно прочитать
например тут (и
про bcrypt - тут).
Я конечно же сгенерил новый ключик с KDF, и убил больше часа времени на то чтобы понять почему он не работает. RSA-ключик с KDF по команде ssh-add -l показывается, но при попытке его использовать (зайти по ssh) выдается сообщение "Agent admitted failure to sign using the key.". Попробовал сделать Ed25519 ключик - он даже не загружается. Симптомы такие, как будто ssh-agent более старой версии (и без поддержки KDF), но после обновления уже много раз перезагружался и ssh-agent запущен был свежий.
Переменные окружения, выглядят примерно так:
SSH_AUTH_SOCK=/run/user/1000/keyring-nk1sYd/ssh
SSH_AGENT_PID=1713
SSH_AGENT_LAUNCHER=upstart
Где PID 1713 указывает на запущенный ssh-agent правильной версии и умеющий всё что нужно. На странное имя сокета в SSH_AUTH_SOCK я внимания не обратил.
В итоге после кучи других действий я запустил lsof -U и обнаружил, что сокет слушает вовсе не ssh-agent, а gnome-keyring-daemon. Новый формат ключей он не понимает, и судя по тому что
баг на эту тему висит в багтрекере уже год, понимать научится ещё не скоро.