Windows ЧМОД 600

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

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

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

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


person Austin Richardson    schedule 10.03.2011    source источник
comment
Я полагаю, что он доступен только для чтения для конкретного пользователя. Я не думаю, что имеет значение, может ли пользователь писать в файл.   -  person Austin Richardson    schedule 10.03.2011
comment
Мой расчет говорит, что rw для владельца, все остальное отключено.   -  person David Heffernan    schedule 10.03.2011
comment
конечно, вы имеете в виду chmod, а не CHMOD тоже!!   -  person David Heffernan    schedule 10.03.2011
comment
правильно, а что за команда?   -  person Austin Richardson    schedule 10.03.2011
comment
@David файловая система без учета регистра...   -  person Austin Richardson    schedule 10.03.2011
comment
@Austin без учета регистра *nix? Действительно? Который из?   -  person David Heffernan    schedule 10.03.2011
comment
Это окна, вы должны использовать графический интерфейс ‹/tongueincheek›. Свойства файла, безопасность, изменить его на доступ только владельца.   -  person Erik    schedule 10.03.2011
comment
Вы даже можете запустить chmod в Windows!   -  person David Heffernan    schedule 10.03.2011
comment
@ Дэвид, тебе нужен Cygwin. Mac OS по умолчанию нечувствительна к регистру   -  person Austin Richardson    schedule 10.03.2011
comment
@Эрик, можно поконкретнее? Есть много разных диалогов, когда я пытаюсь изменить разрешения.   -  person Austin Richardson    schedule 10.03.2011
comment
@Остин, тебе не нужен cygwin для запуска chmod.   -  person David Heffernan    schedule 10.03.2011
comment
@david, он говорит, что программа не может запуститься, потому что на компьютере отсутствует cygintl-2.dll ... когда я набираю chmod   -  person Austin Richardson    schedule 10.03.2011
comment
@auston, вам нужен родной chmod, а не cygwin, например. GnuWin32.   -  person David Heffernan    schedule 10.03.2011
comment
@Austin Кроме того, что такое DOS? В Windows 7 нет DOS.   -  person David Heffernan    schedule 10.03.2011
comment
Точно такой же сценарий привел меня сюда.   -  person kta    schedule 23.05.2015


Ответы (12)


Я понимаю, что это несколько устарело, но я только что нашел решение для себя в 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 port] [-e escape_char] [-F configfile] [-i identity_file] [ -L порт:хост:хостпорт] [-l логин_имя] [-m mac_spec] [-o опция] [-p порт] [-R порт:хост:хостпорт] [пользователь@]имя хоста [команда]

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

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

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

person 에이바    schedule 06.07.2012
comment
(+1) Удалил версию OpenSSH 0.9.7d и следовал инструкциям в этом посте, чтобы установить новый OpenSSH. chmod работает как шарм. - person Frenzy Li; 02.07.2016
comment
Спасибо, что указали на это. Интернет еще не знает о mls-software.com/opensshd.html. - person jgomo3; 07.09.2016
comment
У меня были проблемы с AWS, требующие ввода парольной фразы, которая неприменима. Это было единственным решением. - person The Original Android; 15.05.2017

Я столкнулся с той же проблемой в Windows 10. Я исправил ее, выполнив следующие шаги.

1:- Щелкните правой кнопкой мыши целевой файл и выберите properties, затем выберите вкладку Security.

2:- Нажмите Advanced и убедитесь, что наследование отключено.

3:- Нажмите apply, а затем нажмите Edit в меню безопасности.

4:- Remove все пользователи, кроме администратора, который должен иметь полный доступ *У учетной записи администратора должны быть отмечены все флажки в столбце Allow, кроме специального разрешения.

5:- Нажмите Apply, а затем нажмите OK.

Вы можете идти. Это работало для файла Amazon EC2 .pem и дало почти такую ​​же работу, как Chmod 600 в Linux.

введите здесь описание изображения

person Erin    schedule 15.06.2018
comment
Ты один! Спасибо! Удаление всех пользователей, кроме моего, исправило ситуацию, т.е. - person Itay Ben Shmuel; 07.08.2020

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

person Erik    schedule 10.03.2011
comment
он все еще говорит Permissions 0644 for key.pem are too open - person Austin Richardson; 10.03.2011
comment
Тогда openssh ведет себя нехорошо - возможно, вместо этого используйте cygwin? - person Erik; 10.03.2011
comment
Кроме того, может помочь предоставить разрешения владельцу-создателю вместо вашего имени пользователя. - person Erik; 10.03.2011
comment
Это совсем не помогает проблеме. Ошибка разрешения 0644 все еще возникает. - person Kevin Borders; 26.11.2013
comment
Еще один шаг: добавьте запись для специального пользователя «Все» и отредактируйте разрешения для этого пользователя, чтобы запретить все разрешения. - person spideringweb; 27.01.2015
comment
Если вы находитесь в wsl, попробуйте поместить его в ~/.ssh, а затем chmod 700 ~/.ssh вместе с chmod 600 ~/.ssh/KeyPairName.pem Мне это помогло. - person John D; 30.06.2018
comment
Простое исправление на Win10. Спасибо! - person MiniMe; 15.02.2019
comment
Это в значительной степени сделало это для меня. В ~/.ssh был один файл, который был испорчен. Первоначально я думал, что проблемный файл был ~/.ssh/config, но мне также нужно было проверить права доступа к ~/.ssh/id_rsa. - person Matt Popovich; 25.02.2021

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

  • Файл ключа не наследуется от контейнера
  • Вы (владелец) имеете полный доступ
  • Удалить записи разрешений для любых других пользователей (например, СИСТЕМА, Администратор)
  • Add an Entry for special user Everyone and edit the permissions for that user to Deny for all permissions:
    • Right click on the file in Windows Explorer and choose Properties > Security > Advanced, to get the Advanced Security Settings dialog.
    • Перейдите на вкладку «Разрешения», затем нажмите «Изменить разрешения».
    • Нажмите «Добавить», введите «Все» в поле имени объекта, нажмите «Проверить имена», затем нажмите «ОК».
    • В диалоговом окне «Ввод разрешения» установите флажок в столбце «Запретить» для «Полный доступ».
    • Нажмите OK в каждом диалоговом окне, чтобы вернуться и закрыть диалоговое окно свойств файла.

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

person user2309219    schedule 09.04.2014
comment
Запретить отменяет отдельные разрешения пользователя, поэтому, если ваш владелец находится в группе «Все», это откажет во всех разрешениях для этого файла и приведет не к 400, а к 000. - person GWD; 27.03.2020

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

person Ralfeus    schedule 06.01.2012
comment
К сожалению, это вызывает UAC каждый раз, когда вы запускаете ssh и открываете его в новой командной оболочке (по крайней мере, в Windows 8). - person Kevin Borders; 26.11.2013

Для Unix и OS X

Довольно просто:

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:

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

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

chown -R $USER:users  /cygdrive/c/Users/$USER/.ssh
chmod -R 600 /cygdrive/c/Users/$USER/.ssh
person Jonathan    schedule 05.02.2016

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

myuser@myuser-HP ~
$ ssh -i /cygdrive/c/Users/myuser/Downloads/mykey.pem [email protected]
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         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 [email protected]

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

https://aws.amazon.com/amazon-linux-ami/2015.09-release-notes/
[ec2-user@ip-xxx ~]$ ohyeah I am in!
person B.Mr.W.    schedule 17.10.2015

chmod не работает в винде. Попробуйте следующий метод, чтобы ограничить доступ

  • Щелкните правой кнопкой мыши файл › свойства › безопасность › дополнительно › отключить наследование › «Преобразовать унаследованные разрешения в явное разрешение на этот объект»
  • Нажмите «Разрешить» | все | Полный доступ › изменить › «выбрать принципала» › ввести свое имя пользователя › «проверить имена» › выбрать свое имя пользователя › ок › ок › ок (ок, пока все окна не закроются)
person Codemaker    schedule 21.09.2020

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

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

person Florian Feldhaus    schedule 11.06.2018
comment
@Inoperable Вы были правы, кажется, я скопировал старую, неполную версию. Я исправил и протестировал код, и теперь он работает так, как должен. - person Florian Feldhaus; 14.05.2020

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

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

person tCheang    schedule 31.01.2012

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

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

person Austin Richardson    schedule 10.03.2011

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

person mr.sysadmin    schedule 13.08.2013
comment
Это не устраняет проблему с разрешениями 0644. - person Kevin Borders; 26.11.2013