Ошибка «Плохой владелец или права» при использовании Cygwin's ssh.exe


29

Я пытаюсь использовать ssh.exe в Cygwin (в Windows 7). Я скопировал configфайл в c:\cygwin\home\[USERNAME]\.ssh. Когда я запускаю ssh(например, ssh -vT git@bitbucket.org), я получаю следующую ошибку:

OpenSSH_5.9p1, OpenSSL 0.9.8r 8 фев 2011 Плохой владелец или права на /home/[USERNAME]/.ssh/config

Как мне sshпрочитать мой файл конфигурации?

Ответы:


46

Сделав, как указано выше, я всегда получил это:

total 22
drwxrwxr-x+ 1 jl None    0 Sep  9 18:44 .
drwxrwxr-x+ 1 jl None    0 Sep  9 18:44 ..
-rw-rw----  1 jl None  129 Jul  1 14:30 config

и ошибка вкл .ssh/config. Так что я бежал chownна .sshпапку, и chmodснова , как это:

> chown -R [USERNAME]:users .ssh/

а потом:

> chmod -R 600 .ssh/

и наконец я получил это работает:

total 29
drwxrwxr-x+ 1 jl None     0 Sep  9 18:44 .
drwxrwxrwt+ 1 jl None     0 Sep  9 18:44 ..
drw-------+ 1 jl Users    0 Sep  9 18:44 .ssh

Редактировать (для bash на Windows10)

Когда вы получите ошибку ..

Не удалось добавить хост в список известных хостов (/PATH_TO_HOME/USERNAME/.ssh/known_hosts).

Убедитесь, что known_hosts доступен для записи

$ chmod 755 known_hosts

Примечание: я полагаю, что вам нужно только установить 600 для вашего личного ключа

Затем попробуйте ssh.

Когда вы получаете..

Постоянно добавлен «HOST_IP» (RSA) в список известных хостов.

Вы можете заменить режим 600

$ chmod 600 known_hosts

PS : я думаю, что это ошибка в Windows 8.


Принятый ответ не сработал для меня, но это сработало. Благодарность!
Ачал Дейв,

Кроме того, это довольно странная ошибка. На моем компьютере (W8.1) редактирование файла .ssh / config в Vim всегда приводит к этой ошибке. Это очень раздражает, так как каждое изменение в моей конфигурации ssh требует выполнения этих команд.
Ачал Дэйв

4
И еще, чтобы добавить к странности, если вы используете неанглийскую версию Windows, убедитесь, что при вводе этой команды используйте перевод «users» для локали. Например, на нидерландском языке это становится "chown -R: Gebruikers .ssh"
Александр Келлетт

1
Для меня это сработало: chown -R m0j0: Пользователи .ssh && chmod -R go-rwx .ssh
m0j0

1
Спасибо, это сработало и для меня, на немецком языке вы должны использоватьchown -R [Username]:Benutzer .ssh/
con

20

Этот ответ дословно скопирован с https://superuser.com/a/875934/82032 . Это единственный ответ, который сработал для меня после недавнего обновления Cygwin.

Не забывайте ACL

У меня ничего не получалось, пока я не удалил файл ACL и не сбросил разрешения.

#remove ACLs
setfacl -b ~/.ssh/config

#reset permissions
chmod 0600 ~/.ssh/config

Вы можете использовать getfaclдля просмотра текущего ACL на файл.

getfacl ~/.ssh/config

Прежде чем я удалил ACL (сломанный):

# owner: Administrators
# group: None
user::rw-
group::---
group:Authenticated Users:rwx
group:SYSTEM:rwx
mask:rwx
other:---

После: (работает)

# file: config
# owner: myusername
# group: None
user::rw-
group::---
other:---

Это то, что я должен был сделать после обновления cygwin
blockloop

1
Для этого требуется cygwin 1.7.34-6
ClintM

Это то, что сработало для меня!
Ашутош Джиндал

9

Проверьте права доступа к configфайлу с помощью команды Cygwin ls:

> c:\cygwin\bin\ls.exe -la c:\cygwin\home\[USERNAME]\.ssh

Это, вероятно, будет что-то вроде этого:

total 5
drwxrwxrwt+ 1 Administrators None  0 Oct 20 17:02 .
drwxr-xr-x+ 1 [USERNAME]     None  0 Oct 19 08:15 ..
-rw-------  1 Administrators None 57 Oct 20 16:58 config

Файл конфигурации должен принадлежать [ИМЯ ПОЛЬЗОВАТЕЛЯ]. Попробуй это:

> c:\cygwin\bin\chown.exe [USERNAME] c:\cygwin\home\[USERNAME]\.ssh\config

ls -laтеперь должен показать правильного владельца. Если это все еще не работает, попробуйте сбросить режим (разрешения):

> c:\cygwin\bin\chmod.exe 700 c:\cygwin\home\[USERNAME]\.ssh\config

9

Для 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:

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

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

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

Обычно это для меня, так как группа обычно ошибается в файлах.
Алан Крюгер

3

Важное замечание, если ваша Windows не на американском английском: имя группы «users» зависит от локали. Например, если у вас Windows на испанском языке, вам придется изменить владельца файлов с помощьюchown $USER:Usuarios *


1

Ни один из них (chmod / chown / icacls / setacl / copyacls / explorer> security) не работал на моем cygwin64 / win7 / admin, наконец, это работает с cygwin64/ssh -F ~/.ssh/configдругими решениями - использовать более старый ssh ​​в cygwin32 или ssh в git для windows ..


Использование -Fрешит проблему с config, но не разрешит разрешения для закрытых ключей.
Яри ​​Туркиа

0

Для тех, кто использует noaclpath с ~/.sshdir, простое решение - создать собственную символическую ссылку NTFS:

cmd# mklink c:\home\.ssh c:\opt\cygwin\home\misc\.ssh
symbolic link created for c:\home\.ssh <<===>> c:\opt\cygwin\home\misc\.ssh

С noaclнет возможности установить права доступа, кроме как rwxr-xr-xили rw-r--r--. Поскольку /иерархия должна быть без noacl(или должна быть acl), вы можете создать каталог здесь и указать на него проблемные места для приложений Cygwin.


1
Учитывая, что это каталог, простым решением будет использование соединения, потому что для этого не требуются привилегии, необходимые для установки символической ссылки. Это будет mklink /jтогда или junctionинструмент из Sysinternals Suite.
0xC0000022L

0

tldr: Возможно, вы создали конфигурацию как администратор

Решение

Эти решения могут оказаться излишними, если вы ошибочно создали файл как администратор и попытались использовать файл с локальными привилегиями.

  • Скопируйте содержимое вашей конфигурации ssh
  • Удалить файл
  • Откройте новую оболочку (локально - не администратор)
  • Перейдите к пути, где хранится ваша конфигурация ( обычно ~/.sshв PowerShell или %userprofile%\.sshв cmd )
  • Бег notepad .\config

Простые команды (PowerShell):

$sshPath = '~/.ssh/config'
$content = cat $sshPath
# In case the line above fails, this check will prevent your current config to get deleted
if ($content) {
  rm $sshPath
  $content | Out-File -en ascii $sshPath
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.