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

Я пытаюсь использовать 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 ответов

Решение

Проверьте разрешения config файл с использованием Cygwin's 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

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

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.

Этот ответ дословно скопирован с /questions/319504/nastrojka-sshgit-na-cygwin-vyidaet-nevernyie-razresheniya-na-sshconfig/319509#319509. Это единственный ответ, который сработал для меня после недавнего обновления 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:---

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

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

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

Для тех, кто использует 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.

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
}
Другие вопросы по тегам