Вопрос или проблема
Это вопрос о клиенте OpenSSH на Linux, MacOSX и FreeBSD.
Обычно я вхожу в системы, используя свой SSH-ключ.
Иногда мне нужно, чтобы мой SSH-клиент игнорировал мой SSH-ключ и использовал взамен пароль. Если я использую ‘ssh hostname’, мой клиент запрашивает у меня парольную фразу к SSH-ключу, что неудобно. Вместо этого я хочу, чтобы клиент просто игнорировал мой SSH-ключ и сервер запросил меня ввести мой пароль.
Я пробовал следующее, но система всё равно запрашивает парольную фразу к моему SSH-ключу. После этого у меня запрашивают пароль.
ssh -o PreferredAuthentications=password host.example.org
Я хочу сделать это на стороне клиента, без каких-либо изменений на удалённом хосте.
Попробуйте ssh -o PasswordAuthentication=yes -o PreferredAuthentications=keyboard-interactive,password -o PubkeyAuthentication=no host.example.org
В ssh v2 keyboard-interactive
— это другой способ сказать “password”. Опция -o PubkeyAuthentication=no
инструктирует клиент не пытаться использовать аутентификацию по ключевой паре.
Кроме того, опция PasswordAuthentication=yes
предназначена для переопределения любых ранее настроенных параметров ssh, которые могли отключить её.
Третьи платформы, такие как виртуальные частные серверы или облачные провайдеры, включают свои собственные настройки в предоставленных образах Linux, которые переопределяют пользовательские изменения SSH.
Чтобы включить аутентификацию паролем в SSH, необходимо также внести следующие изменения:
в /etc/ssh/ssd_config
измените:
#Include /etc/ssh/sdd_confid./*conf
в /etc/cloud/cloud.cfg
измените:
disable_root: false
ssh_pwauth: true
в /etc/cloud/cloud.cfg.d/00_defaults
измените:
ssh_pwauth: true
Ответ или решение
Теория
SSH (Secure Shell) — это программный протокол, использующийся для безопасного управления удаленными хостами через незащищенные сети. В ситуациях, когда необходимо установить безопасное соединение с сервером, SSH-клиент обычно использует два наиболее распространенных метода аутентификации: ключи SSH и пароли. Ключи SSH представляют собой криптографическую пару "открытый-закрытый", обеспечивающую более высокий уровень безопасности по сравнению с обычными паролями.
Тем не менее, в некоторых ситуациях может возникнуть необходимость временно отказаться от аутентификации через SSH-ключи и использовать пароль. Это может быть полезно, например, для проведения тестов или когда необходимо убедиться, что пароль пользователя работает корректно. Выключение аутентификации ключом может стать сложностью, если конфигурация сервера или клиента не настроена соответствующим образом, что может вызывать запрос на ввод пароля для ключа.
Пример
Рассмотрим пример задачи, при которой пользователь хочет временно отключить аутентификацию с использованием SSH-ключей и использовать только пароль. Одна из наиболее простых стратегий — это конфигурация клиента SSH для исключения использования публичных ключей при конкретном соединении.
При использовании следующей команды, аутентификация через SSH-ключи будет отключена:
ssh -o PasswordAuthentication=yes -o PreferredAuthentications=keyboard-interactive,password -o PubkeyAuthentication=no host.example.org
В данной команде:
-o PasswordAuthentication=yes
— активирует возможность аутентификации по паролю на клиенте, что может предусмотреть преодоление любой ранее настроенной конфигурации, отключающей данную возможность.-o PreferredAuthentications=keyboard-interactive,password
— устанавливает предпочтительные методы аутентификации. В OpenSSH это эквивалентно использованию пароля.-o PubkeyAuthentication=no
— исключает возможность использования аутентификации по публичному ключу.
Применение
С точки зрения практического применения, важно понимать, что вышеприведенная команда действует только локально, на стороне клиента, и не требует изменений в конфигурации сервера. Это означает, что даже если вы используете публичную инфраструктуру, такую как виртуальные частные серверы или облачные провайдеры, не требуется вносить изменения на стороне сервера.
Тем не менее, при использовании некоторых платформ, которые могут иметь свои настройки безопасности, могут возникнуть дополнительные шаги по активации аутентификации паролем. Например, провайдеры облачных серверов часто используют свои собственные образы, в которые включены специфичные параметры конфигурации SSH. В таких случаях необходимо проверить глобальные конфигурационные файлы сервера:
- Проверьте файл конфигурации SSH сервера, расположенный по адресу
/etc/ssh/sshd_config
, чтобы убедиться, что параметры, которые вам необходимы, не заблокированы. - Убедитесь, что в файлах конфигурации облачной среды, таких как
/etc/cloud/cloud.cfg
, установлена поддержка паролей путем редактирования строкиssh_pwauth: true
.
В случаях, когда настройки создаются в контролируемой среде (например, в корпоративной сети), может потребоваться сотрудничество с ИТ-отделом для внесения изменений на серверной стороне, хотя данный сценарий не подходит для временного отключения SSH-ключа, если требуется без изменения серверных настроек.
Важно помнить, что использование паролей несет более высокие риски с точки зрения безопасности, чем использование SSH-ключей. Поэтому, если необходимо использовать пароли для аутентификации, следует убедиться, что пароли сильные и сложные для угадывания, а доступ осуществляется только из доверенных сетей.
Заключение
Отключение аутентификации по SSH-ключу на клиентской стороне — это полезная функция, которую можно использовать для различных сценариев тестирования или устранения неполадок. Оно осуществляется просто, без вмешательства в серверные настройки, что обеспечивает больший контроль для конечных пользователей. Однако ключевым фактором остается понимание и управление безопасностью, поэтому все изменения следует производить с учетом возможных угроз и рисков.