Вопрос или проблема
Мой пользователь с другого сервера дал мне свой открытый ключ и попросил установить этот открытый ключ на моем сервере, чтобы он мог подключиться к моему серверу. Я немного исследовал, и оказалось, что мне нужно создать директорию с названием .ssh
, вставить открытый ключ пользователя в блокнот и сохранить этот текстовый файл в директории .ssh
. Мой вопрос: правильно ли я исследовал, и если да, то где и как создать эту директорию .ssh
и файл ключа, в текстовом формате ли он? Нужно ли мне передавать какую-то информацию, как мой ключ, этому пользователю? Я использую Windows Server 2012.
-
Открытый ключ должен быть в файле
authorized_keys
(а не просто в каком-то текстовом файле) в подкаталоге.ssh
в домашней директории пользователя. -
Запись открытого ключа должна иметь правильный формат, например:
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAir2cIHsAFg8QzLF6Yb... some optional comment
-
Файл
authorized_keys
должен использовать *nix окончания строк, что Notepad не может сделать (поэтому убедитесь, что ваш SFTP/FTP клиент использует ASCII режим передачи для преобразования окончаний строк) -
Папка
.ssh
должна иметь права700
, аauthorized_keys
должен иметь права600
.
На просторах интернета существуют миллионы руководств, охватывающих вышеуказанное.
Например, смотрите мое руководство Настройка аутентификации по открытому ключу в OpenSSH.
Если пользователь уже является пользователем на вашем сервере (имеет работающую аутентификацию паролем [или другим способом]), он/она может установить открытый ключ самостоятельно.
- На машинах с *nix (или других, где доступен OpenSSH, включая Windows), вы можете использовать скрипт
ssh-copy-id
. - На машинах с Windows вы можете использовать (мой) WinSCP с его функцией GUI Установить открытый ключ на сервер или командой
/copyid
в командной строке.
См. также мой ответ на вопрос Настройка аутентификации по открытому ключу на Linux сервер с Windows (ppk закрытый ключ).
Вам следует предоставить вашему пользователю копию открытого ключа сервера, чтобы пользователь мог его проверить при первом подключении (это не связано с аутентификацией, что является темой остальной части вопроса). Хотя многие пользователи просто вслепую принимают ключ сервера.
.
Ответ или решение
Чтобы установить публичный ключ на сервер Windows Server 2012, следуйте данным инструкциям, обеспечивая безопасное подключение пользователя. Рассмотрим все шаги и нюансы процесса установки ключа, включая создание необходимых директорий и назначение правильных прав доступа.
Теория (Theory)
Шифрование с публичным ключом предоставляет безопасный способ аутентификации, при котором публичный ключ, представленный пользователем, сохраняется на сервере в специальном файле authorized_keys
. Этот метод позволяет пользователям подключаться к серверу без необходимости ввода пароля. Сервер использует публичный ключ, чтобы проверить соединение, созданное с помощью закрытого ключа, хранящегося у пользователя.
Пример (Example)
Обычно публичный ключ имеет формат ssh-rsa <длинная_последовательность> <комментарий>
. Ключ хранится в текстовом формате, однако важно убедиться, что его окончания строк соответствуют *nix-формату. Изменения в кодировках могут вызвать ошибки, поэтому использование подходящих текстовых редакторов или FTP-клиентов облегчит процесс конвертации.
Применение (Application)
-
Создание директорий и файлов:
- Войдите на сервер с тем профилем пользователя, для которого вы хотите обеспечить доступ через публичный ключ.
- Перейдите в каталог домашней директории этого пользователя. Чаще всего путь к ней имеет вид:
C:\Users\<имя_пользователя>
. - Создайте подкаталог
.ssh
, если он еще не существует. Это можно сделать через командную строку PowerShell или командуcmd
:mkdir C:\Users\<имя_пользователя>\.ssh
-
Создание и редактирование файла authorized_keys:
- Создайте текстовый файл с именем
authorized_keys
внутри каталога.ssh
. - Откройте файл с помощью текстового редактора, способного работать с *nix форматами, например, Notepad++ или Visual Studio Code.
- Вставьте публичный ключ, который вам предоставил пользователь, в новый файл и сохраните его.
- Создайте текстовый файл с именем
-
Установка прав доступа:
- Убедитесь, что у директории
.ssh
установлены права доступа700
, что значит, что только владелец может читать, записывать и выполнять файлы в этой директории:icacls C:\Users\<имя_пользователя>\.ssh /grant <имя_пользователя>:(R,W,X) icacls C:\Users\<имя_пользователя>\.ssh /remove Everyone
- Убедитесь, что файл
authorized_keys
имеет права600
, что значит, что только пользователь может читать и записывать файл:icacls C:\Users\<имя_пользователя>\.ssh\authorized_keys /grant <имя_пользователя>:(R,W) icacls C:\Users\<имя_пользователя>\.ssh\authorized_keys /remove Everyone
- Убедитесь, что у директории
-
Конфигурация сервера SSH:
- Чтобы использовать ключи SSH, сервер должен поддерживать OpenSSH или иметь установленную службу SSH.
- Убедитесь, что служба SSH запущена и настроена правильно для аутентификации с использованием публичного ключа.
-
Подтверждение доступа:
- Сообщите пользователю о завершении процесса и предложите попробовать подключиться к серверу.
- Вы можете также предоставить пользователю публичный ключ хоста, чтобы обеспечить проверку подлинности сервера при первом подключении.
Заключение
Этот процесс позволяет безопасно управлять доступом пользователей через SSH. Правильная настройка ключей может значительно упростить администрирование серверов и увеличить безопасность. В рамках Windows Server 2012 стоит помнить о необходимости использования сторонних инструментов и средств для полной интеграции возможностей SSH. Убедитесь в точном следовании указанным шагам, чтобы избежать ошибок в конфигурации, которые могут привести к отказу в доступе.