Windows CHMOD 600 - PullRequest
       56

Windows CHMOD 600

35 голосов
/ 10 марта 2011

Я пытаюсь подключиться к Amazon EC2 с помощью OpenSSH в Windows, но мне нужно установить разрешения для моего файла ключей.

Что такое эквивалент окна CHMOD 600?

Я много гуглил и нашел только блогспам.

РЕДАКТИРОВАТЬ: Windows 7, используя DOS.

Ответы [ 11 ]

27 голосов
/ 06 июля 2012

Я понимаю, что это несколько устарело, но я только что нашел решение для себя в Windows 7. И, похоже, этот вопрос остался нерешенным. У меня были все те же ошибки, включая Cygwin missing cygintl-2.dll на chmod, как вы отметили в комментариях.

После обширных исследований и не найдя ответов, я запустил:

C:\Users\mztriz\.ssh>ssh -v

OpenSSH_3.8.1p1, OpenSSL 0.9.7d 17 марта 2004 г. использование: ssh [-1246AaCfghkNnqsTtVvXxY] [-b bind_address] [-c cipher_spec] [-D порт] [-e escape_char] [-F файл конфигурации] [-i файл_идентификации] [-L порт: хост: хост-порт] [-l логин_имя] [-m mac_spec] [-o опция] [-p порт] [-R порт: хост: хост-порт] [пользователь @] имя хоста [команда]

Как вы можете видеть, версия OpenSSH, которую я использовал, была довольно устаревшей. Однако я не знал об этом, потому что быстрый поиск в Google OpenSSH for Windows возвращает эту старую версию.

Изучив версии, я обнаружил OpenSSH для Windows 6.9p1-1 в разделе загрузок этого веб-сайта.

Эта новая версия OpenSSH, похоже, решает все проблемы, о которых вы упомянули.

8 голосов
/ 09 апреля 2014

Измените разрешения так, чтобы:

  • Файл ключа не наследуется от контейнера
  • Вы (владелец) имеете полный доступ
  • Удалить записи разрешений для любых других пользователей (например, SYSTEM, Administrator)
  • Добавить запись для специального пользователя Все и отредактировать разрешения для этого пользователя, чтобы Запретить для всех разрешений:
    • Щелкните правой кнопкой мыши файл в проводнике Windows и выберите «Свойства»> «Безопасность»> «Дополнительно», чтобы открыть диалоговое окно «Дополнительные параметры безопасности».
    • Перейдите на вкладку «Разрешения», затем нажмите «Изменить разрешения».
    • Нажмите «Добавить», введите «Все» в поле имени объекта, нажмите «Проверить имена», затем нажмите «ОК».
    • В диалоговом окне «Ввод разрешений» установите флажок в столбце «Запретить» для полного доступа.
    • Нажмите OK в каждом диалоговом окне, чтобы вернуться назад и закрыть диалоговое окно свойств файла.

Теперь scp прочитает права доступа 0400 и будет счастлив. Иш.

6 голосов
/ 06 января 2012

У меня такой же вопрос. Решение, которое работало, состояло в том, чтобы установить режим совместимости ssh.exe на Windows XP SP3.

6 голосов
/ 10 марта 2011

Щелкните правой кнопкой мыши файл / каталог, выберите «Свойства», затем «Безопасность». Нажмите «Дополнительно», затем «Изменить». Снимите флажок «Наследовать» и выберите «Удалить» в диалоговом окне. Удалите все оставленные явные разрешения, добавьте разрешение «Полный доступ» к вашему имени пользователя.

3 голосов
/ 15 июня 2018

Я столкнулся с той же проблемой в Windows 10. Я исправил ее, добавив своего пользователя и предоставив разрешения на изменение, чтение и выполнение, чтение и запись.Я удалил всех остальных пользователей.Вот как это выглядит после удаления всех других разрешений:

enter image description here

3 голосов
/ 05 февраля 2016

Для Unix и OSX

Все просто:

chown -R $USER:users ~/.ssh/
chmod -R 600 ~/.ssh/

Для Windows

Если файл является символической ссылкой Windows (NTFS), вышеприведенное не будет работать. Вы должны сделать это обычным файлом. Я не уверен, почему.

Если у вас нет openssh или cygwin, используйте chocolatey, чтобы легко установить его, используя chocolatey .

choco install cyg-get

Откройте терминал Cygwin , который был установлен с chocolatey и запущен (обратите внимание, что ssh-keygen создает новые ключи):

cyg-get install openssh
ssh-keygen
cd ~/.ssh && explorer.exe .

Убедитесь, что ключи есть (или замените их на нужные вам ключи), а затем в оболочке Cygwin:

chown -R $USER:users ~/.ssh/
chmod -R 600 ~/.ssh/

Или для редкого случая, когда вы используете (и сгенерировали ключи) пакет Chocolatey's SSH :

chown -R $USER:users  /cygdrive/c/Users/$USER/.ssh
chmod -R 600 /cygdrive/c/Users/$USER/.ssh
3 голосов
/ 17 октября 2015

Я предпочитаю Cygwin вместо putty , и вы можете просто запустить команду chmod в cygwin, чтобы изменить разрешение клавиши PEM на 400, и тогда все готово.

myuser@myuser-HP ~
$ ssh -i /cygdrive/c/Users/myuser/Downloads/mykey.pem ec2-user@xx.xx.xx.xx
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0550 for '/cygdrive/c/Users/myuser/Downloads/mykey.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 "/cygdrive/c/Users/myuser/Downloads/mykey.pem": bad permissions
Permission denied (publickey).

myuser@myuser-HP ~
$ chmod
chmod: missing operand
Try 'chmod --help' for more information.

myuser@myuser-HP ~
$ chmod 400 /cygdrive/c/Users/myuser/Downloads/mykey.pem

myuser@myuser-HP ~
$ ssh -i /cygdrive/c/Users/myuser/Downloads/meykey.pem ec2-user@xx.xx.xx.xx

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2015.09-release-notes/
[ec2-user@ip-xxx ~]$ ohyeah I am in!
1 голос
/ 11 июня 2018

Сегодня одним из рекомендуемых способов в Windows было бы использовать PowerShell и командлеты Get-Acl и Set-Acl.

Вот пример, гарантирующий, что только текущий пользователь имеет разрешение на папку и всефайлы в нем - аналогично тому, что рекомендуется для папки .ssh в Unix / Linux / OS X:

# get current ACL of directory
$Acl = Get-Acl -Path $Directory

# remove inheritance ($true) and remove all existing rules ($false)
$Acl.SetAccessRuleProtection($true,$false)

# create new access rule for
# current user
# with FullControl permission
# enable inheritance for folders and files
# enable it for the specified folder as well
# allow these conditions 
$AcessRule = [System.Security.AccessControl.FileSystemAccessRule]::new(
    $env:USERNAME,
    "FullControl",
    ([System.Security.AccessControl.InheritanceFlags]::ContainerInherit -bor [System.Security.AccessControl.InheritanceFlags]::ObjectInherit),
    System.Security.AccessControl.PropagationFlags]::None,
    [System.Security.AccessControl.AccessControlType]::Allow)

# add access rule to empty ACL
$Acl.AddAccessRule($AcessRule)

# activate ACL on folder
Set-Acl -Path $SgwConfigDirectory -AclRule

Подробнее см.

1 голос
/ 31 января 2012

У меня такой же вопрос.Решение, которое работало, состояло в том, чтобы установить режим совместимости ssh.exe на Windows XP SP3.

-> Этот ответ работает для Windows 7

0 голосов
/ 13 августа 2013

Скопируйте файл в систему Unix через scp и сделайте chmod 600 в файл.Затем перенесите файл обратно на компьютер с Windows.У меня это сработало.

...