7

У меня есть файл .pem, расположенный на локальном диске C "c/private-key.pem", и у меня есть мягкая ссылка на него в подсистеме Ubuntu "~/.ssh/private-key.pem -> /mnt /c /private- key.pem»

И когда я пытаюсь отключить удаленную машину из подсистемы Ubuntu, я получил:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/home/artur/.ssh/private-key.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/home/artur/.ssh/private-key.pem": bad permissions
Permission denied (publickey).

Это было начато после 1803 обновления для Windows.

Я пытался использовать chmod 400 для ключа на диске C и в папке ./ssh в подсистеме. И пытался установить владельца только для меня и удалить всех других пользователей из панели безопасности в Windows для этого ключа файла. Но я получил "Permissions XXXX for '/home/artur/.ssh/private-key.pem' are too open" or "Permission denied" все время.

Может ли кто-нибудь помочь мне и объяснить, как должны быть настроены разрешения для ключей в Windows и подсистеме Ubuntu?

4 ответа4

5

Решение, которое работает для меня в Windows WSL (без изменения режима файла):

sudo ssh -i keyfile <user>@ip
3

Скопируйте ключ SSH в каталог WSL ~/.ssh , так как ключ SSH с разрешениями, отличными от 600/400, скомпрометирует ключ.

  • После того, как ключ скопирован, убедитесь, что его EOL были изменены на LF.

  • Посмотрите ответ @ simpleuser ниже, чтобы понять, почему разрешения не могут быть изменены через Windows, из-за чего необходимо скопировать ключ в ~/.ssh WSL

2

Я читаю между строк и предполагаю, что вы используете подсистему Linux в Windows 10. Когда вы поставили символическую ссылку на файл Windows из C:\ в файловую систему Linux в $ HOME/.ssh, разрешения для фактического файла все еще находятся под управлением Windows, а разрешения, показанные вам в окне Linux, лучше всего представляют Windows разрешения; Вы не можете изменить разрешения для файлов Windows в /mnt /c из Linux. В этом разделе часто задаваемых вопросов от Microsoft говорится о том, как обрабатываются файлы в двух перекрывающихся файловых системах.

Файл, для которого нужно изменить разрешение, - это файл, на который указывает символическая ссылка, то есть файл в /mnt /c

Кажется невозможным предоставить пользователю доступ только к файлу Windows. Даже если вы отключите наследование разрешений для файла и дадите только свое собственное разрешение на чтение для пользователя, разрешения Linux по-прежнему будут отображаться как -r - r - r--, так что они не будут использоваться для .ssh

Похоже, что единственным вариантом является копирование файла из Windows в Linux, после чего вы можете использовать chmod и chown для него.

-2

Чтобы расширить ответ выше, как это прекрасно работает для меня.

Я использую Linux Windows Shell на Windows 10 Pro.

Обновление 1803 сломало SSH в оболочке, поскольку в Windows нет эквивалента chmod 600.

но вы можете оставить свой pem без изменений с разрешением файла 777 и запустить

sudo ssh -i  my777Keyfile.pem  ubuntu@12.34.45.78 

и теперь вы будете входить прямо. (Не уверен, почему, хотя).

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