Ssh-подключение с помощью ключа Windows
Обновлено: 06.07.2024
SSH может выполнять аутентификацию с использованием традиционной комбинации имени пользователя и пароля или пары открытого и закрытого ключей. Пара ключей SSH устанавливает доверие между клиентом и сервером, тем самым устраняя необходимость вводить пароль во время аутентификации. Хотя это и не требуется, закрытый ключ SSH можно зашифровать с помощью парольной фразы для дополнительной безопасности.
Клиент PuTTY SSH для Microsoft Windows не использует тот же формат ключа, что и клиент OpenSSH. Поэтому необходимо создать новый открытый и закрытый ключ SSH с помощью инструмента PuTTYgen или преобразовать существующий закрытый ключ OpenSSH.
Требования
- SSH-клиент PuTTY для Microsoft Windows
- Удаленный сервер, доступный через OpenSSH
Установите PuTTY и PuTTYgen
И PuTTY, и PuTTYgen необходимы для преобразования ключей OpenSSH и подключения к серверу через SSH. Эти два инструмента можно загрузить по отдельности или, что предпочтительнее, в виде установщика Windows со страницы загрузки PuTTY.
После загрузки установщика PuTTY для Windows дважды щелкните исполняемый файл в папке «Загрузки» и следуйте указаниям мастера установки. Настройки по умолчанию подходят для большинства установок. И PuTTY, и PuTTYgen теперь должны быть доступны из списка программ Windows.
Использовать существующие открытые и закрытые ключи
Если у вас есть открытый и закрытый ключ OpenSSH, скопируйте ключ id_rsa на рабочий стол Windows. Это можно сделать, скопировав и вставив содержимое файла или используя клиент SCP, такой как PSCP, который поставляется с установкой PuTTY, или FileZilla.
Затем запустите PuTTYgen из списка программ Windows.
- Нажмите "Конверсии" в меню "Генератор ключей PuTTY" и выберите "Импортировать ключ".
- Перейдите к закрытому ключу OpenSSH и нажмите "Открыть" .
- В разделе Действия/Сохранить сгенерированный ключ выберите Сохранить закрытый ключ.
- Выберите дополнительную фразу-пароль для защиты закрытого ключа.
- Сохраните закрытый ключ на рабочем столе как id_rsa.ppk.
Если открытый ключ уже добавлен в файл author_keys на удаленном SSH-сервере, перейдите к разделу «Подключение к серверу с помощью закрытого ключа».
Создать новые открытый и закрытый ключи
Запустите PuTTYgen из списка программ Windows и выполните следующие действия.
- В разделе "Параметры" увеличьте количество битов в сгенерированном ключе: до минимального значения 2048.
- В разделе "Действия/Создать пару открытого/закрытого ключа" нажмите "Создать".
- Вам будет предложено перемещать курсор мыши в окне генератора ключей PuTTY в качестве рандомизатора для генерации закрытого ключа.
- Когда появится информация о ключе, нажмите Сохранить закрытый ключ в разделе Действия/Сохранить сгенерированный ключ.
- Сохраните закрытый ключ на рабочем столе как id_rsa.ppk.
- Поле под ключом/открытым ключом для вставки в файл author_keys OpenSSH: содержит открытый ключ.
Копировать открытый ключ на сервер
Открытый ключ OpenSSH находится в поле Ключ/Открытый ключ для вставки информации из файла OpenSSH author_keys: . Открытый ключ начинается с ssh-rsa, за которым следует строка символов.
- Выделите весь открытый ключ в генераторе ключей PuTTY и скопируйте текст.
- Запустите PuTTY и войдите на удаленный сервер, используя существующие учетные данные пользователя.
Используйте предпочитаемый текстовый редактор для создания и/или открытия файла author_keys:
Вставьте открытый ключ в файл author_keys.
Сохраните файл и закройте текстовый редактор.
Настройте права доступа к файлу author_keys так, чтобы этот файл не допускал групповых разрешений на запись.
Выход из удаленного сервера.
Подключиться к серверу с закрытым ключом
Теперь пришло время протестировать аутентификацию по ключу SSH. Инструмент PuTTYgen можно закрыть и снова запустить PuTTY.
В этой статье мы настроим аутентификацию SSH с ключами RSA в Windows для безопасного доступа к удаленным серверам/компьютерам. Мы покажем, как создавать ключи RSA (сертификаты) в Windows и настраивать встроенный сервер OpenSSH в Windows 10/Windows Server 2019 для аутентификации на основе ключей (позволяет проходить аутентификацию на удаленных хостах без паролей).
Аутентификация на основе ключей SSH широко используется в мире Linux, но в Windows она появилась совсем недавно. Идея заключается в том, что открытый ключ клиента добавляется на SSH-сервер, и когда клиент пытается подключиться к нему, сервер проверяет, есть ли у клиента соответствующий закрытый ключ.
Создание SSH (RSA) в Windows
Вы должны сгенерировать два ключа RSA (открытый и закрытый) на клиентском компьютере, который вы будете использовать для подключения к удаленному серверу Windows, на котором работает OpenSSH. Приватный ключ хранится на стороне клиента (никому его не передавайте!), а публичный ключ добавляется в файл author_keys на SSH-сервере. Для создания ключей RSA на клиенте Windows необходимо установить клиент OpenSSH.
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
В предыдущих версиях Windows можно было установить порт Win32-OpenSSH с GitHub (см. пример в статье о настройке сервера SFTP (SSH FTP) в Windows).
Запустите стандартный (непривилегированный) сеанс PowerShell и сгенерируйте пару ключей RSA 2048 с помощью команды:
Вам будет предложено ввести пароль для защиты закрытого ключа. Если вы укажете пароль, вам придется вводить его каждый раз, когда вы используете этот ключ для аутентификации SSH. Я не ввел кодовую фразу (не рекомендуется).
Ssh-keygen создаст каталог .ssh в профиле текущего пользователя Windows (C:\Users\your_username) и поместит в него 2 файла:
- id_rsa — закрытый ключ
- id_rsa.pub — открытый ключ
После того, как вы создали ключи RSA, вы можете добавить закрытый ключ в службу агента SSH, что позволяет удобно управлять закрытыми ключами и использовать их для аутентификации. Агент SSH хранит закрытые ключи и предоставляет их в контексте безопасности текущего пользователя. Запустите службу ssh-agent и настройте ее на автоматический запуск с помощью команд управления службой PowerShell:
set-service ssh-agent StartupType «Автоматический»
Start-Service ssh-agent
Добавьте свой закрытый ключ в базу данных ssh-agent:
Настройка сервера OpenSSH в Windows для аутентификации с использованием ключей SSH
Затем скопируйте открытый ключ, сгенерированный на клиенте, на свой SSH-сервер (в данном примере это удаленный компьютер под управлением Windows 10 1903 и с настроенным OpenSSH).
Скопируйте файл id_rsa.pub в каталог .ssh в профиле пользователя, которого вы будете использовать для подключения к серверу SSH. Например, у меня есть пользователь admin в Windows 10, поэтому я должен скопировать ключ в C:\Users\ admin \.ssh\authorized_keys.
Вы можете скопировать открытый ключ на SSH-сервер с помощью SCP:
scp C:\Users\youruser\.ssh\id_rsa.pub admin@192.168.1.15:c:\users\admin\.ssh\authorized_keys
Теперь вы можете подключаться к SSH-серверу Windows без пароля. Если вы не установили пароль (парольную фразу) для закрытого ключа, вы автоматически подключитесь к удаленному хосту Windows.
Чтобы подключиться к удаленному хосту с помощью собственного SSH-клиента, вам потребуется следующая команда:
ssh (имя пользователя)@(имя или IP-адрес сервера SSH)
Это означает, что вы хотите подключиться к удаленному SSH-серверу с IP-адресом 192.168.1.15 под учетной записью admin. Агент SSH автоматически попытается использовать закрытый ключ, сохраненный ранее, для аутентификации.
Если вы не хотите использовать службу ssh-agent для управления ключами SSH, вы можете указать путь к файлу закрытого ключа, который будет использоваться для аутентификации SSH:
ssh admin@192.168.1.15 -i "C:\Users\youruser\.ssh\id_rsa"
Если вам не удалось подключиться к серверу SSH с помощью ключа RSA, но вам по-прежнему предлагается ввести пароль, вероятно, учетная запись пользователя, к которой вы пытаетесь подключиться, является членом группы администраторов локального сервера ( SID группы S-1-5-32-544). Мы обсудим это позже.
Как войти в Windows с помощью ключа SSH под локальным администратором?
OpenSSH использует специальные настройки доступа на основе ключа для пользователей с правами локального администратора Windows.
Во-первых, используйте файл ключа C:\ProgramData\ssh\administrators_authorized_keys вместо файла authorized_keys в профиле пользователя. Вы должны добавить свой SSH-ключ в этот текстовый файл (в целях безопасности только группа «Администраторы» и «СИСТЕМА» должны иметь права на чтение этого файла).
Чтобы использовать файл author_keys из профиля пользователя и не перемещать данные открытого ключа в файл administrators_authorized_keys, вы можете прокомментировать соответствующую строку в файле конфигурации OpenSSH (C:\ProgramData\ssh\sshd_config).< /p>
Разрешить доступ к Windows с помощью ключей RSA в файле sshd_config:
И отключите вход по паролю ssh:
Не забудьте перезапустить службу sshd после сохранения изменений в sshd_config.
Еще одна важная вещь. В более ранних версиях OpenSSH вам нужно было предоставить NT Service\sshd права на чтение файла author_keys.
Для этого необходимо выполнить одно из следующих действий:
Итак, вы настроили аутентификацию SSH в Windows с использованием открытого ключа RSA (сертификата). Теперь вы можете использовать этот метод аутентификации для безопасного доступа к удаленным серверам, автоматического перенаправления портов в туннеле SSH, запуска сценариев и выполнения любых других задач, связанных с автоматизацией.
SSH означает Secure Shell и представляет собой метод, используемый для установления безопасного соединения между двумя компьютерами.
SSH работает путем аутентификации на основе пары ключей, при этом закрытый ключ находится на удаленном сервере, а соответствующий открытый ключ — на локальном компьютере. Когда ключи совпадают, доступ предоставляется удаленному пользователю.
В этом руководстве показано, как сгенерировать пару ключей SSH в Windows 10 с помощью OpenSSH или PuTTY.
- Система под управлением Windows 10
- Учетная запись пользователя с правами администратора
- Доступ к командной строке
- Веб-браузер (необязательно для загрузки PuTTY)
Создайте ключ SSH в Windows 10 с помощью клиента OpenSSH
Шаг 1. Проверьте, установлен ли клиент OpenSSH
Сначала проверьте, установлен ли у вас клиент OpenSSH:
<р>1. Откройте панель "Настройки" и нажмите "Приложения". <р>2. Под заголовком Приложения и функции нажмите Дополнительные функции.- Если это не так, нажмите на значок "плюс" рядом с пунктом "Добавить функцию".
- Прокрутите список, чтобы найти и выбрать клиент OpenSSH.
- Наконец нажмите «Установить».
Шаг 2. Откройте командную строку
<р>1. Нажмите клавишу Windows. <р>2. Введите cmd. <р>3. В разделе Лучшее соответствие щелкните правой кнопкой мыши командную строку. <р>4. Нажмите «Запуск от имени администратора».Шаг 3. Используйте OpenSSH для создания пары ключей SSH
<р>1. В командной строке введите следующее:Примечание. Если файл с таким именем уже существует, вас спросят, хотите ли вы перезаписать файл.
<р>3. Вам будет предложено ввести парольную фразу. Нажмите Enter, чтобы пропустить этот шаг. <р>4. Система сгенерирует пару ключей и отобразит отпечаток ключа и случайное изображение. <р>5. Откройте файловый браузер. <р>6. Перейдите к C:\Users\ваше_имя_пользователя/.ssh. <р>7. Вы должны увидеть два файла. Идентификация сохраняется в файле id_rsa, а открытый ключ помечен как id_rsa.pub. Это ваша пара ключей SSH.Примечание. Обычно открытый ключ имеет расширение .pub. Вы можете использовать Блокнот, чтобы просмотреть содержимое как закрытого, так и открытого ключа.
Создание ключей SSH с помощью PuTTY
До того, как OpenSSH был включен в Windows, инструмент PuTTY был золотым стандартом для создания ключей SSH.
Шаг 1. Установите PuTTY
<р>1. Перейдите на страницу разработчика и загрузите установщик PuTTY: <р>2. Дважды щелкните загруженный файл и следуйте указаниям мастера установки, чтобы завершить установку.- В начальном диалоговом окне мастера установки нажмите "Далее".
- Выберите папку назначения. Используйте конфигурацию установки по умолчанию, если у вас нет особой необходимости ее изменить. Нажмите «Далее», чтобы перейти к следующему экрану.
- Выберите функции продукта PuTTY для установки. Придерживайтесь значений по умолчанию, если у вас нет особых потребностей. Нажмите «Далее», чтобы перейти к следующему экрану.
- После завершения процесса нажмите "Готово", чтобы выйти из мастера установки.
Шаг 2. Запустите генератор ключей PuTTY SSH
<р>1. Нажмите клавишу Windows. <р>2. Введите puttygen. <р>3. В разделе Лучшее соответствие щелкните правой кнопкой мыши PuTTYgen. <р>4. Нажмите Запуск от имени администратора. <р>5. При появлении запроса нажмите Да во всплывающем окне Разрешить этому приложению вносить изменения на вашем устройстве?.Шаг 3. Используйте PuTTY для создания пары ключей SSH
В ходе описанного ниже процесса будут созданы ключи RSA — классический и широко используемый тип алгоритма шифрования. Инструмент генерации ключей PuTTY предлагает несколько других алгоритмов: DSA, ECDSA, Ed25519 и SSH-1 (RSA).
Если вам требуется другой алгоритм шифрования, выберите нужный вариант в разделе Параметры перед созданием пары ключей.
<р>1. В окне Генератор ключей PuTTY нажмите "Создать". <р>2. Переместите курсор в серое поле, чтобы заполнить зеленую полосу.- Нажмите кнопку "Сохранить открытый ключ".
- Выберите место для сохранения ключа.
- Дайте ключу имя (например, putty_key.pub)
- Откройте меню "Конверсии" вверху.
- Нажмите Экспорт ключа OpenSSH.
- Вас спросят, хотите ли вы сохранить ключ без кодовой фразы. Нажмите Да.
- Выберите место для сохранения ключа (обычно это та же папка, что и открытый ключ).
- Дайте ключу имя (например, putty_key).
Использование ключей SSH
Чтобы использовать ключи SSH, скопируйте открытый ключ SSH в систему, к которой вы хотите подключиться. Используйте свой закрытый SSH-ключ в своей системе. Ваш закрытый ключ совпадет с открытым ключом и предоставит доступ.
Для получения дополнительной информации и устранения неполадок см. наше руководство по входу в SSH без пароля с использованием ключей SSH.
В этой статье представлены два метода создания пар ключей SSH в системе Windows 10. Используйте ключи SSH для подключения к удаленной системе без использования паролей.
У меня возникли проблемы с настройкой OpenSSH для Windows с использованием аутентификации с открытым ключом.
У меня это работает на моем локальном рабочем столе, и я могу использовать ssh с помощью ключа с компьютеров Unix или других компьютеров OpenSSH для Windows.
Я реплицировал сборку на сервер, у меня нормально работает аутентификация по паролю, но когда я использую ключи, возникает следующая проблема:
Итак, в целях тестирования я просто пытался подключиться по SSH к локальному хосту, но даже при удаленной попытке я получаю ту же проблему.
Еще более странно то, что когда у меня включены и пароль, и открытый ключ в sshd_config , он только попытается использовать ключи, а затем выдаст указанное выше сообщение и даже не попытается использовать пароль.
Вот шаги, которые я предпринял:
- Установите OpenSSH для Windows
- mkgroup -l >>..\etc\group (добавлены локальные группы)
- mkgroup -d >>..\etc\group (добавлены группы домена)
- mkpasswd -L -u openssh >>..\passwd (добавлен мой локальный пользователь)
- mkpasswd -D -u jsadmint2232 >>..\passwd (добавлен мой доменный пользователь)
- Изменен домашний каталог в файле passwd, чтобы он указывал на c:\sshusers%USER%, где %USER% – это имя пользователя.
- Аутентификация по паролю включена, аутентификация по ключу отключена.
- Создали ключи SSH для jsadmint2232 и OpenSSH и удостоверились, что файлы были созданы в домашних каталогах.
- Добавлены файлы author_keys в каталоги .ssh для каждого пользователя и добавлены ключи для входящих подключающихся пользователей.
- net stop opensshd / net start opensshd
- Проверьте, работает ли аутентификация по паролю как локально, так и удаленно.
- Обновлен sshd_config, включена авторизация по ключу — перезапустите opensshd
- Проверьте соединение и получите указанную выше ошибку. Кроме того, он даже не пытается установить пароль.
- Обновлен sshd_config, чтобы полностью отключить аутентификацию по паролю — перезапустите opensshd
- Проверить соединение и все равно получить указанную выше ошибку
Похоже, сервер по какой-то причине разрывает соединение.
11 ответов 11
Ниже приведены шаги по настройке OpenSSH, поставляемого с Windows 10 v.1803 (обновление от апреля 2018 г. См. комментарии к этому сообщению, это может не работать с 1809).
Настройка сервера (powershell с повышенными правами):
Установите сервер OpenSSH: Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 .
Запуск службы агента и sshd: Start-Service ssh-agent; Start-Service sshd (это автоматически сгенерирует ключи хоста и конфигурацию по умолчанию в $env:ProgramData\ssh ).
[Необязательно] Установите модуль PowerShell OpenSSHUtils: Install-Module -Force OpenSSHUtils
Настройка клиента (powershell без повышенных прав):
Сгенерируйте ключ пользователя: cd $env:USERPROFILE\.ssh; ssh-keygen.exe , следуйте инструкциям, согласитесь с предложенным расположением файла по умолчанию. Это создаст 2 файла: id_rsa и id_rsa.pub ;
[Необязательно] добавьте ключ к агенту аутентификации, чтобы вам не приходилось вводить пароль каждый раз, когда вы его используете: ssh-add .\id_rsa (или любой другой файл, который был сгенерирован);
Продолжение настройки сервера (powershell без повышенных прав):
- Войдите как пользователь, для которого будет использоваться аутентификация с открытым ключом
- cd $env:USERPROFILE; мкдир .ssh; компакт-диск .ssh; Authorized_keys для нового элемента ;
- Вставьте содержимое файла id_rsa.pub из клиента в файл .ssh\authorized_keys из предыдущего шага.
- Правильно настройте разрешения (важно):
- Выполнить запуск . чтобы открыть проводник с текущей папкой ( $env:USERPROFILE\.ssh );
- Щелкните правой кнопкой мыши author_keys и выберите "Свойства" -> "Безопасность" -> "Дополнительно".
- Нажмите "Отключить наследование";
- При появлении запроса выберите "Преобразовать унаследованные разрешения в явные разрешения для этого объекта";
- (очень, очень важно) Удалите все разрешения для файла, кроме СИСТЕМЫ и себя. В файле должно быть ровно две записи разрешений. В некоторых руководствах предлагается запустить Repair-AuthorizedKeyPermission $env:USERPROFILE\.ssh\authorized_keys — это попытается добавить пользователя sshd в список разрешений и нарушит аутентификацию, поэтому не делайте этого. что, или, по крайней мере, не соглашайтесь на добавление пользователя sshd). И СИСТЕМА, и вы должны иметь полный контроль над файлом.
Попробовал это с Windows 10 в качестве сервера и с самим собой и с Debian Linux в качестве клиента.
Ты мой герой @n0rd. В течение нескольких часов пытались установить правильные разрешения, но, похоже, Repair-AuthorizedKeyPermission установил пользователя sshd, что нарушило его! (Я думаю, что он должен быть там, чтобы процесс OpenSSH SSH Server мог его просмотреть). большое спасибо!
Еще одно дополнение и решение моей проблемы: в Windows 10 1809 есть новая специальная запись конфигурации в C:\ProgramData\ssh\sshd_config, которая определяет, что для пользователей с правами администратора ключи считываются из __PROGRAMDATA__/ssh/administrators_authorized_keys . Опять же, этот файл требует специальных разрешений. Только системный пользователь и группа администраторов должны иметь к нему доступ.
Это очень помогло, но проблема с разрешениями осталась. Эти 3 команды исправили это: icacls C:\ProgramData\ssh\administrators_authorized_keys /remove "NT AUTHORITY\Authenticated Users" и icacls C:\ProgramData\ssh\administrators_authorized_keys /inheritance:r и get-acl C:\ProgramData\ssh\ssh_host_dsa_key | set-acl C:\ProgramData\ssh\administrators_authorized_keys источник
Используйте эту последовательность команд в PowerShell, чтобы исправить права администратора_authorized_keys
Только группа SYSTEM и администраторы должны иметь права доступа к файлу без наследования.
Как ни удивительно, приведенное выше решение будет работать только в системе, в которой установлен английский язык. Например, в Windows 10 на французском языке вы должны заменить «Администраторы» на «Администраторы» и «Система» на «Система». Удивительно, правда?
Еще один совет, если вы застряли, — запускайте sshd в режиме отладки. Я сделал это:
- Остановить службу sshd
- Откройте консоль PowerShell с правами администратора
- Введите 'sshd -d'
- Введите логин с моей клиентской машины
Оказывается, ключ должен быть, например. C:\ProgramData\ssh\administrators_authorized_keys вместо C:\Users\yourUser.ssh\authorized_keys.
Очень полезный ответ для меня. Это помогает не только ответить на вопрос, в чем проблема, но и как решить подобные проблемы в следующий раз.
Я решил проблему.
Это связано с учетной записью, которая запустила службу — она использовала учетную запись Local System — это мешало ей получить доступ к открытому ключу и файлу author_keys.
Как только я остановил службу и запустил ее от имени пользователя, к которому пытался подключиться, все заработало!
По сути, вам нужно начать с сервисного аккаунта, а затем внешние пользователи будут подключаться как этот пользователь.
Что вы имеете в виду, когда "остановили службу и запустили ее от имени пользователя, к которому я пытался подключиться?" Я не думаю, что вы имеете в виду, что я использую свою настоящую учетную запись пользователя домена. Тогда вы предлагаете мне начать с сервисного аккаунта, но с какого?
Это всего лишь моя написанная версия отличного ответа @n0rds.
Поместите этот скрипт в каталог с вашим закрытым/открытым ключом/парой и запустите!
Когда я создал учетную запись SSHD_SERVER вручную, аутентификация прошла успешно при использовании аутентификации по паролю, но клиент завершил соединение с "/bin/bash: операция не разрешена". Аутентификация с открытыми ключами была закрыта сервером (исходная ошибка, опубликованная Cambolie).
Отзывы от mls-software указывают на то, что это не всегда так. Отключение UAC в моем случае решило проблему, но это может быть необходимо не во всех случаях. Я изучу свою ситуацию подробнее и посмотрю, смогу ли я опубликовать более подробную информацию.
Почему это важно для MLS OpenSSH? Почему он не может работать как локальная система (или какая-то другая, даже доменная, учетная запись?)
- Установка в SSHD_SERVER + режим разделения привилегий. Я также установил разделение привилегий на «да» в конфигурации вручную. У меня это долго не работало, пользователь не создавался. Потом заработало, не знаю почему. Я только зашел в учетные записи пользователей в панели управления, чтобы убедиться, что UAC отключен. У меня также был /var/empty с полным доступом для всех.
- Для C:\openssh\var\empty я установил разрешения "получение/установка атрибутов" для всех и себя и "полные" разрешения для .\sshd_server. Я также сделал его владельцем.
Я тщательно протестировал решение n0rd на нескольких компьютерах с Windows Pro 1809 и 2004. Я согласен с большинством его шагов.
Я не обнаружил никаких проблем ни с одним файлом, касающихся безопасности, разрешений или Unicode. Все они были правильными из коробки.
Я использую Win 10.0.18363, но мне не удалось запустить проверку подлинности на основе ключа. Я могу подключиться с помощью пароля, но при переключении на ключ я получаю сброс соединения ::1 порт 22 даже с локального хоста
Я столкнулся с другой ситуацией.
Сначала выполните отладку, как сказал gWay, с другим окном терминала, подключающимся к серверу.
Я получил read_keyfile_line: C:\\Users\\yieatn\\.ssh/authorized_keys, строка 1 превышает ограничение по размеру
перекодировать author_keys в utf-8
Причина в том, что я создал author_keys с помощью cat id_rsa >> author_keys, а powershell на китайском языке использует кодировку UTF-16 для создания файлов.
Решение n0rd стоит денег, но есть дополнительные сложности для пользователей, которые также входят в группу администраторов. Если вы ищете решение для ситуации, связанной со следующими условиями:
- Вы хотите использовать открытые ключи для каждого пользователя (или не хотите использовать файл administrators_authorized_keys).
- И вы не хотите использовать аутентификацию по паролю.
- И некоторые пользователи также входят в группу администраторов.
Проблема, с которой я столкнулся, заключается в том, что когда я пробовал решение n0rd, оно не работало для пользователей в описанных выше условиях. Немного повозившись, я нашел решение, которое стабильно работает для меня. Следуйте решению n0rd и просто измените следующее
Убедитесь, что в ssh_config установлены следующие параметры:
Кроме того, не забудьте закомментировать параметр Match Group Administrators:
Обязательно включите открытый ключ клиента в файл сервера C:\Users\username\.ssh\authorized_keys.
Наконец, чтобы помочь сопоставить пользователя с учетной записью, я счел полезным указать более конкретные данные о пользователе в клиенте. Вместо простого имени пользователя я использовал имя пользователя вместе с доменом пользователя на сервере. В моем случае файл C:\Users\UserName\.ssh\config моего клиента выглядел так:
В этом случае мой сервер Windows 10 будет называться servername (под именем устройства). Указав пользователя таким образом, я мог избежать аутентификации по паролю.
В качестве дополнительного бонуса это очень хорошо работало с оболочкой PowerShell 7 по умолчанию. Даже мой профиль PowerShell по умолчанию работал через ssh, и я получил полную поддержку posh-git и oh-my-posh. Однако я обнаружил, что метод по умолчанию, предложенный для того, чтобы сделать PowerShell средой оболочки по умолчанию (путем редактирования ssh_conf для включения «Subsystem powershell c:/progra~1/powershell/7/pwsh.exe -sshs -NoLogo»), не работает. для меня. Вместо этого на сервере используйте команду в окне PowerShell с повышенными привилегиями:
Это просто создает запись в реестре. Вы всегда можете открыть реестр, чтобы удалить его позже, если хотите.
Читайте также: