Я использую openSSH для Windows (32-разрядная версия), и у меня есть настройка SSH для аутентификации с открытым ключом Я вполне уверен, что все права доступа к файлам установлены правильно, и я добавил правильный открытый ключ в файл authorized_keys. Однако, когда клиент пытается аутентифицировать свой открытый ключ, он терпит неудачу. Вывод отладки выглядит следующим образом: (открытый ключ заменен на xxxxxxx)

debug1: userauth-request for user X service ssh-connection method publickey debug1: attempt 2 failures 0 debug2: input_userauth_request: try method publickey debug3: userauth_pubkey: have signature for RSA SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx debug1: trying public key file C:\\Users\\X\\authorized_keys debug1: matching key found: file C:\\Users\\X\\authorized_keys, line 2 RSA SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx debug3: socket:0, socktype:1, io:00986788, fd:3 debug3: unable to connect to pipe \\\\.\\pipe\\openssh-ssh-agent, error: 2 debug3: close - io:00986788, type:2, fd:3, table_index:3 debug1: get_priv_agent_sock: unable to connect to privileged agent, errno:2 debug2: userauth_pubkey: authenticated 0 pkalg rsa-sha2-512 Failed publickey for X from ::1 port 63175 ssh2: RSA SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx debug3: userauth_finish: failure partial=0 next methods="publickey,password,keyboard-interactive"

Интересно, может ли это быть причиной unable to connect to pipe \\\\.\\pipe\\openssh-ssh-agent, error: 2 . Если это так - есть ли способ отключить эту функцию и просто использовать авторизованные ключи?

РЕДАКТИРОВАТЬ: Оказывается, что unable to connect to pipe \\\\.\\pipe\\openssh-ssh-agent, error: 2 ошибка 2 исчезла, используя предложение Jakuje, однако аутентификация с открытым ключом все еще не удается с:

Failed publickey for X from ::1 port 63175 ssh2: RSA SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx debug3: userauth_finish: failure partial=0 next methods="publickey,password,keyboard-interactive"

РЕДАКТИРОВАТЬ 2: Стоит упомянуть, что я не запускаю типичные настройки. Исполняемые файлы openSSH, файлы конфигурации и файлы ключей находятся не в домашнем каталоге пользователя, а в каталоге ProgramData пользователя.

3 ответа3

3
debug3: unable to connect to pipe \\\\.\\pipe\\openssh-ssh-agent, error: 2
debug3: close - io:00986788, type:2, fd:3, table_index:3
debug1: get_priv_agent_sock: unable to connect to privileged agent, errno:2

Ключ найден, но серверу необходимо связаться с агентом аутентификации, чтобы создать сеанс. Это или не началось или не удалось. Вы можете попытаться найти его, перезапустить сервер sshd и так далее. Что все изменения Windows делают и обсуждаются в этом запросе на извлечение:

https://github.com/openssh/openssh-portable/pull/63

1

Эта проблема возникла у меня, когда я обновил OpenSSH с 0.6.0 до 0.20.0, просто переписав файлы. Фактически, как указывает @Jakuje, в архитектуре было несколько изменений, и теперь sshd требуется отдельный агент, ssh-agent, которого не было в предыдущих версиях.

Вам необходимо переустановить OpenSSH, выполнив:

PS C:\OpenSSH-Win64> net stop sshd

The sshd service was stopped successfully.

PS C:\OpenSSH-Win64> .\uninstall-sshd.ps1
sshd successfully uninstalled
ssh-agent service is not installed
PS C:\OpenSSH-Win64> .\install-sshd.ps1
[SC] SetServiceObjectSecurity SUCCESS
[SC] ChangeServiceConfig SUCCESS
[SC] ChangeServiceConfig2 SUCCESS
sshd and ssh-agent services successfully installed
PS C:\OpenSSH-Win64> net start sshd

The sshd service was started successfully.

Также может потребоваться исправить разрешения с помощью Fix {Host | User} FilePermissions.ps1.

0

Поэтому я переместил файл author_keys в домашний каталог пользователя /.ssh, установив разрешения следующим образом:

  • Пользователь SSHD: чтение и выполнение, чтение, запись
  • Система: полный доступ
  • Администраторы: полный доступ

И изменил путь в файле sshd_config, чтобы он указывал на новое местоположение, и все начало работать. Надеюсь, что это поможет кому-то еще, кто может столкнуться с той же проблемой.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .