Аутентификация на основе ключа SSH запрашивает пароль при первом входе

У меня новая система Ubuntu 16.04.1 LTS, и я заметил, что SSH-аутентификация на основе ключей запрашивает пароль учетной записи при первом входе в систему на компьютере, и последующие попытки SSH работают без запроса пароля.

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

В целом, это довольно аккуратно, так как смягчает скомпрометированный ключ SSH, хотя и имеет недостаток для автоматизированных процессов; в моем случае управление конфигурацией с Ansible.

Где настроено поведение сервера SSH? В частности, запросить аутентификацию по паролю, даже если аутентификация на основе ключа прошла успешно, но только в первый раз, когда ключ используется для открытия сеанса.

Я хотел бы сохранить это "двухфакторное" поведение ish для интерактивных сеансов, но отключить его (т.е. не запрашивать пароль) для определенных учетных записей (например, выделенного ansible пользователь).

Спасибо!

2 ответа

Я нашел ответ на другом обмене стека. Причиной такого поведения является то, что домашний каталог зашифрован!

/questions/361880/banshi-ne-v-sostoyanii-poluchit-informatsiyu-o-treke/361883#361883

Ваш домашний каталог зашифрован? Если это так, для вашего первого сеанса SSH вы должны будете предоставить пароль. Второй сеанс SSH на том же сервере работает с ключом авторизации. Если это так, вы можете переместить свои авторизованные ключи в незашифрованный каталог и изменить путь в ~ /.ssh / config.

Я проследил это, просматривая /var/log/auth.logи, в частности, строка:

pam_ecryptfs: Passphrase file wrapped

Поиск этого привел меня к другому ответу на обмен стека.

Если вы удалите пароль из закрытого ключа, агент SSH не будет запрашивать его. Предполагая, что учетная запись только для компьютера называется ansible как в вопросе, вы можете достичь этого с помощью этой команды:

sudo -u ansible ssh-keygen -f ~ansible/.ssh/id_<TYPE> -N ''

или же

sudo ssh-keygen -f ~ansible/.ssh/id_<TYPE> -N ''

в зависимости от конфигурации управления правами доступа (замените <TYPE> с указанным типом ключа, например rsa, ecdsa, ed25519 так далее.).


Машинные ключи без пароля являются обычной практикой и достаточно безопасны, если

  • использует уникальный выделенный ключ для службы, используя ключ (не такой, как ключ, используемый разработчиками службы)!) и

  • заменяет ключ и удаляет его из всех authorized_keys файлы при первом признаке потенциального компромисса (чему способствует мера, описанная в предыдущем пункте).

Конечно файл ключа должен иметь режим доступа 0500 ограничить доступ только к учетной записи машины. Это режим доступа по умолчанию для ключей, созданных с ssh-keygen,

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