Окна ЧМОД 600

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

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

Я широко гуглил и нашел только blogspam.

EDIT: Windows 7, используя DOS.

11 ответов


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

после долгих поисков и не найдя ответов, я побежал:

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

OpenSSH_3.8.1p1, OpenSSL 0.9.7 d 17 Mar 2004 использование: ssh [-1246AaCfghkNnqsTtVvXxY] [- b bind_address] [- c cipher_spec] [-Д порт] [- e escape_char] [- F configfile] [- I identity_file] [-L порт:хост:значение по умолчанию-false] [-л аргумент] [-м mac_spec] [-o опцию] [- P порт] [- R порт: хост: hostport] [пользователь@] имя хоста [команда]

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

после просмотра версии я нашел OpenSSH для Окна 6.9p1-1 в разделе загрузки данного веб-сайта.

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


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

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

теперь scp будет читать разрешения 0400 и будут счастливы. Что-то в этом роде.


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


щелкните правой кнопкой мыши файл / dir, выберите Свойства, Затем безопасность. Нажмите кнопку Дополнительно, затем изменить. Снимите флажок " наследуемый "и выберите" Удалить " в диалоговом окне. Удалите все явные разрешения слева, добавьте разрешение "полный доступ" к вашему имени пользователя.


предпочитаю Cygwin над шпаклевка и вы можете просто запустить команду 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!

для unix & OSX

все просто:

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

Для Windows

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

если у вас нет openssh или cygwin, используйте chocolatey, чтобы легко установить его с помощью шоколадный.

choco install cyg-get

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

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

проверьте наличие ключей (или замените их нужными ключами), а затем в Cygwin shell:

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

или для редкого случая, который вы используете (и сгенерировали ключи) шоколадный в СШ пакет:

chown -R $USER:users  /cygdrive/c/Users/$USER/.ssh
chmod -R 600 /cygdrive/c/Users/$USER/.ssh

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

- > этот ответ работает для windows 7


сегодня одним из рекомендуемых способов в 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

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


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

enter image description here


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


на самом деле не отвечая на тот же вопрос, но я смог подключиться к EC2, используя следующие инструкции:

SSH для экземпляра EC2 linux из Windows