Cygwin's ssh.exe dosyasını kullanarak “Kötü sahip veya izinler” hatası


29

Cyshwin'de ssh.exe kullanmaya çalışıyorum (Windows 7'de). Bir configdosyayı kopyaladım c:\cygwin\home\[USERNAME]\.ssh. Çalıştığımda ssh(örneğin, ssh -vT git@bitbucket.org) aşağıdaki hatayı alıyorum:

OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Şub 2011 Kötü ev sahibi veya /home/ГUSERNAME EUROP/.ssh/config üzerindeki izinler

sshKonfigürasyon dosyamı nasıl okuyabilirim?

Yanıtlar:


46

Yukarıdaki gibi yaptıktan sonra, her zaman şunu anladım:

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

ve hata .ssh/config. Yani koşuyoruz chownüzerinde .sshklasör ve chmodbunun gibi tekrar:

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

ve sonra:

> chmod -R 600 .ssh/

ve sonunda çalışmasını sağladım:

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

Düzenleme (Windows10'da bash için)

Hatayı aldığınızda ..

Ana bilgisayar bilinen ana bilgisayar listesine eklenemedi (/PATH_TO_HOME/USERNAME/.ssh/known_hosts).

Bilinen_hostların yazılabilir olduğundan emin ol

$ chmod 755 known_hosts

Not: Özel anahtarınız için yalnızca 600’ü ayarlamanız gerektiğine inanıyorum.

Sonra ssh yapmaya çalış.

Ne zaman alırsın ..

Bilinen ana bilgisayar listesine kalıcı olarak 'HOST_IP' (RSA) eklendi.

600 modunu değiştirebilirsiniz.

$ chmod 600 known_hosts

Not : Bunun Windows 8'de bir hata olduğunu düşünüyorum.


Kabul edilen cevap benim için işe yaramadı, ama bu yaptı. Teşekkürler!
Achal Dave 12:13

Ayrıca, bu oldukça garip bir hatadır. Bilgisayarımda (W8.1), .ssh / config dosyasını Vim'de düzenlemek her zaman bu hatayı doğurur. Ssh config'teki her değişikliğin bu komutları çalıştırmasını gerektirdiği için son derece sinir bozucu.
Achal Dave

4
Ve sadece gariplik eklemek için, Windows'un İngilizce olmayan bir sürümünü kullanıyorsanız, bu komutu verirken "kullanıcıların" yerel çevirisini kullandığınızdan emin olun. Mesela Hollandaca'da "chown -R: Gebruikers .ssh" olur
Alexander Kellett

1
Benim için bu işe yaradı: chown -R m0j0: Kullanıcılar .ssh && chmod -R go-rwx .ssh
m0j0

1
Bu benim için çalıştığın için teşekkürler, Almanca da kullanman gerekiyorchown -R [Username]:Benutzer .ssh/
con

20

Bu cevap https://superuser.com/a/875934/82032 adresinden yazılı olarak kopyalanmıştır . Bu, son bir cygwin güncellemesinden sonra benim için çalışan tek cevap.

ACL'leri unutma

ACL dosyasını elimden edip izinleri sıfırlayana kadar hiçbir şey benim için işe yaramadı .

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

#reset permissions
chmod 0600 ~/.ssh/config

getfaclGeçerli ACL'yi bir dosyada görüntülemek için kullanabilirsiniz .

getfacl ~/.ssh/config

ACL'leri çıkarmadan önce (Kırık):

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

Sonra: (çalışıyor)

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

Bu cygwin yükselttikten sonra yapmam gereken
şeydi

1
Bu cygwin 1.7.34-6 gerektirir
ClintM

Bu benim için çalıştı!
Ashutosh Jindal

9

configCygwin'in lskomutunu kullanarak dosyanın izinlerini kontrol edin :

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

Muhtemelen böyle bir şey olacak:

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

Yapılandırma dosyasının [USERNAME] öğesine ait olması gerekiyor. Bunu dene:

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

ls -laşimdi doğru sahibini göstermeli. Bu hala işe yaramazsa, modu sıfırlamayı deneyin (izinler):

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

9

Unix ve osx için

Oldukça basit:

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

Pencereler için

Dosya bir Windows (NTFS) sembolik bağlantısıysa, yukarıdaki çalışmaz. Düzenli bir dosya yapmak gerekir. Neden olduğundan emin değilim.

Openssh veya cygwin'iniz yoksa, kolayca kurmak için çikolata kullanın.

choco install cyg-get

Chocolatey ile kurulan ve çalışan Cygwin Terminalini açın ( ssh-keygenyeni anahtarlar oluşturur):

cyg-get install openssh
ssh-keygen
cd ~/.ssh && explorer.exe .

Anahtarların bulunduğunu doğrulayın (veya istediğiniz anahtarlarla değiştirin) ve ardından Cygwin kabuğunda:

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

Ya da kullandığınız nadir durumlarda (ve anahtarları üretti) chocolatey'nin SSH paketi:

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

Bu genellikle benim için, çünkü grup dosyalar üzerinde genellikle yanlış.
Alan Krueger

3

Windows'unuz ABD İngilizcesi değilse önemli not: "Kullanıcılar" grubunun adı yerel ayarlara bağlıdır. Örneğin, Windows'unuz İspanyolca ise, dosyaların sahipliğini değiştirmelisiniz.chown $USER:Usuarios *


1

Bunların hiçbiri (chmod / chown / icacls / setacl / copyacls / explorer> güvenlik) cygwin64 / win7 / admin'im üzerinde çalıştı, nihayetinde bu cygwin64/ssh -F ~/.ssh/configbaşka çözümlerle de işe yaradı.


Kullanarak -Fsorunu çözecek config, ancak özel anahtarlar için izinleri çözmeyecek.
Jari Turkia

0

Dir basit çözümü noaclile yolda kullananlar ~/.sshiçin yerel NTFS sembolik link oluşturmaktır:

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

İle noacldaha sonra diğer izinlerini ayarlamak için hiçbir yol yoktur rwxr-xr-xya rw-r--r--. Gibi /hiyerarşi olmadan olmalıdır noacl(veya yanında olmalı acl) buna Cygwin'ın uygulamalar için sorunlu yerleri burada dizini ve noktası oluşturabilirsiniz.


1
Bu bir dizin olduğu göz önüne alındığında, basit çözüm bir kavşak kullanıyor olacaktı çünkü bu, sembolik bir bağlantı kurmak için gereken ayrıcalıkları gerektirmiyor. O mklink /jzaman ya junctionda Sysinternals Suite'den bir araç olabilirdi.
0xC0000022L

0

tldr: config komutunu adminstrator olarak oluşturmuş olabilirsiniz.

Çözüm

Bu çözümler yanlışlıkla dosyayı yönetici olarak oluşturup, dosyayı yerel izinlerle kullanmayı denerseniz sona erebilir.

  • Ssh config'inizin içeriğini kopyalayın
  • Dosyayı silmek
  • Yeni bir kabuk aç (yerel - yönetici olmayan)
  • Config'inizin bulunduğu yola gidin ( genellikle ~/.sshPowerShell'de veya %userprofile%\.sshcmd'de )
  • Koşmak notepad .\config

Basit komutlar (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
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.