Аутентификация на основе ключа 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
,