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 прочитать мой файл конфигурации?

7 ответов7

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.

19

Этот ответ дословно скопирован с 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:---
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
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
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 ..

0

Для тех, кто использует noacl в пути с ~/.ssh dir, простое решение - создать собственную символическую ссылку 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.

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