3

Я установил OpenSSH для разных версий Linux много раз. Но я не могу на всю жизнь заставить его работать правильно на окнах.

Кажется, есть две стороны вопроса. Права доступа и ключ, используемые sshd/ssh-agent .

права доступа

Каждая страница, которую я читаю, имеет разные ответы для правильных разрешений. Некоторые работают, а иногда и программа жалуется на них.

Насколько я понимаю, все ключи должны принадлежать SYSTEM , с доступом для чтения для NT SERVICE\sshd и Full Control для Administrators и SYSTEM? (Как я понимаю SYSTEM и Administrators представляют root в Windows). Я прочитал в документации, что доступ для чтения необходим, только если не используется ssh-add/ssh-agent . Я также настроил те же разрешения для файла %USERPROFILE%/.ssh/authorized_keys и добавил .pub ключ Ed25519, который я использую, чтобы попытаться подключиться, хотя я также пробовал его с моим собственным сгенерированным RSA ключ.

При установленных разрешениях программа не будет жаловаться при добавлении ключей к агенту или при запуске демона. Единственный параметр, который я изменил в sshd_config - это ListenAddress который был привязан к 0.0.0.0, я установил его на локальный IP-адрес компьютера, поскольку SSH будет использоваться только локально.

Ключи

Когда я запускаю sshd.exe с параметром -d , я замечаю, что он импортирует 4 ключа по умолчанию из %PROGRAMDATA%/ssh . Когда я добавил ключ ed25519.pub к authorized_keys ключу, за ним последовало HOSTNAME@workstation@HOSTNAME , где HOSTNAME - это имя хоста моего компьютера. Обычно я бы ожидал увидеть user@host . Я попытался создать свой собственный ключ и добавить его, но когда я запускаю sshd.exe -d кажется, что он никогда не использует ничего, кроме ключей по умолчанию.

В итоге я не могу подключиться к серверу OpenSSH, и журналы в %PROGRAMDATA%/ssh/Logs только показывают, что сервер запускается . Подводя итог моим вопросам: Каковы правильные разрешения для файлов ключей и authorized_hosts? Имеет ли значение неправильная аннотация в authorized_keys ключах? Должен ли я добавить все ключи по умолчанию .pub в authorized_hosts? И наконец, что означает sshd когда упоминает эти ключи во время запуска (см. Журнал)? Разве мой собственный сгенерированный ключ не должен работать, пока я добавляю его в authorized_hosts?

debug1: sshd version OpenSSH_for_Windows_7.6, LibreSSL 2.6.4
debug1: private host key #0: ssh-rsa SHA256:and12LVkEqyXJ2gr0SxFEQObaSFF+Czlcnx2uFjZaJQ
debug1: private host key #1: ssh-dss SHA256:waeLdy4Sm3NT+zbwEMIhbfl8TLe6WeQ0MuZE07CzFQU
debug1: private host key #2: ecdsa-sha2-nistp256 SHA256:G8/7y/04cSE3EezTrcmpK4lRmJ5f5I/CDPcHaPzsv4o
debug1: private host key #3: ssh-ed25519 SHA256:Jvn9UjsbdzH54L/yvGYGfCzJQVIMiIWL5RETbaL2ACA
debug1: rexec_argv[0]='C:\\WINDOWS\\System32\\OpenSSH\\sshd.exe'
debug1: rexec_argv[1]='-d'
debug1: Bind to port 22 on 192.168.1.144.
Server listening on 192.168.1.144 port 22.

1 ответ1

3

Вы, кажется, смешиваете ключи хостов сервера и открытые ключи вашей учетной записи.


Ключи хоста сервера генерируются Win32-OpenSSH в %PROGRAMDATA%/ssh при его первом запуске. Им также даны правильные разрешения, нет необходимости их изменять. Это ключи, которые вы видите загруженными как "закрытые ключи хоста" в вашем журнале. Это также означает, что у них есть правильные разрешения (иначе они не будут загружаться).


Открытые ключи вашей учетной записи перейдите в %USERPROFILE%/.ssh/authorized_keys . Этот файл должен иметь доступ на запись только к той учетной записи, к которой он принадлежит.

Файл authorized_keys должен содержать открытый ключ часть вашей пары ключей счетов. Это никак не связано с файлами .pub из %PROGRAMDATA%/ssh .

Комментарий в файле authorized_keys не имеет значения вообще.

Ключи от authorized_keys файла не загружаются при запуске сервера. Они загружаются только при попытке входа в систему.

См. Также мое руководство по настройке аутентификации с помощью открытого ключа SSH в Win32-OpenSSH.

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