Помилка "невірного власника або дозволів" при використанні sg.exe Cygwin


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/ evidenceUSERNAMESense/.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).

Переконайтесь, що на відомих_хостях можна записати

$ chmod 755 відомих_хостів

Примітка. Я вважаю, що вам потрібно встановити лише 600 для вашого приватного ключа

Потім спробуйте ssh.

Коли ви отримаєте ..

Постійно додано "HOST_IP" (RSA) до списку відомих хостів.

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

$ chmod 600 відомих_хостів

PS : Я думаю, що це помилка в Windows 8.


Прийнята відповідь не спрацювала для мене, але це вдалося. Спасибі!
Ахал Дейв

Також це досить дивна помилка. На моєму комп'ютері (W8.1) редагування .ssh / config-файлу у Vim завжди призводить до цієї помилки. Це надзвичайно дратує, оскільки кожна зміна мого конфігурації ssh вимагає виконання цих команд.
Ахал Дейв

4
І просто для додання дивацтва, якщо ви використовуєте не англійську версію Windows, тоді обов'язково використовуйте переклад "користувачів" на локальному рівні при видачі цієї команди. Наприклад, голландською мовою стає "chown -R: Gebruikers .ssh"
Олександр Келлет

1
Для мене це спрацювало: chown -R m0j0: Users .ssh && chmod -R go-rwx .ssh
m0j0

1
Дякую, це працювало і для мене, німецькою мовою потрібно користуватисяchown -R [Username]:Benutzer .ssh/
кон

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 (Broken):

# 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файлу за допомогою lsкоманди Cygwin :

> 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

Конфігураційний файл повинен належати до [USERNAME]. Спробуйте це:

> 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), вищезазначене не працюватиме. Потрібно зробити це звичайним файлом. Я не впевнений, чому.

Якщо у вас немає opensh або cygwin, використовуйте шоколад, щоб легко встановити його.

choco install cyg-get

Відкрийте термінал Cygwin, який було встановлено з шоколадом та запустіть (зверніть увагу, що 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 не є англійською мовою США: ім'я групи "користувачі" залежить від місцевості. Наприклад, якщо ваша Windows є іспанською, вам доведеться змінити право власності на файлиchown $USER:Usuarios *


1

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


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

0

Для тих, хто використовує noaclшлях із ~/.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.
0xC0000022L

0

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

Рішення

Ці рішення можуть бути надмірними, якщо ви помилково створили файл як адміністратор та намагаєтесь використовувати файл із локальними perms.

  • Скопіюйте вміст конфігурації 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.