Ssh-подключение с помощью ключа Windows
Обновлено: 21.11.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. Под заголовком Приложения и функции нажмите Дополнительные функции.<р>3. Прокрутите список вниз, чтобы увидеть, есть ли в нем клиент OpenSSH.
- Если это не так, нажмите на значок "плюс" рядом с пунктом "Добавить функцию".
- Прокрутите список, чтобы найти и выбрать клиент OpenSSH.
- Наконец нажмите «Установить».
Шаг 2. Откройте командную строку
<р>1. Нажмите клавишу Windows. <р>2. Введите cmd. <р>3. В разделе Лучшее соответствие щелкните правой кнопкой мыши командную строку. <р>4. Нажмите «Запуск от имени администратора».<р>5. При появлении запроса нажмите «Да» во всплывающем окне Разрешить этому приложению вносить изменения на вашем устройстве?.
Шаг 3. Используйте OpenSSH для создания пары ключей SSH
<р>1. В командной строке введите следующее:<р>2. По умолчанию система сохранит ключи в папку C:\Users\ваше_имя_пользователя/.ssh/id_rsa. Вы можете использовать имя по умолчанию или выбрать более описательные имена. Это может помочь различать ключи, если вы используете несколько пар ключей. Чтобы придерживаться варианта по умолчанию, нажмите Enter.
Примечание. Если файл с таким именем уже существует, вас спросят, хотите ли вы перезаписать файл.
<р>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. Переместите курсор в серое поле, чтобы заполнить зеленую полосу.<р>3. Сохраните открытый ключ:
- Нажмите кнопку "Сохранить открытый ключ".
- Выберите место для сохранения ключа.
- Дайте ключу имя (например, putty_key.pub)
<р>4. Сохраните закрытый ключ:
- Откройте меню "Конверсии" вверху.
- Нажмите Экспорт ключа 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 с повышенными привилегиями:
Это просто создает запись в реестре. Вы всегда можете открыть реестр, чтобы удалить его позже, если хотите.
Читайте также: