Ошибка "Плохой владелец или разрешения" при использовании 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
}