Kesalahan "pemilik atau izin buruk" menggunakan ssh.exe Cygwin

29

Saya mencoba menggunakan ssh.exe di Cygwin (di Windows 7). Saya menyalin configfile ke c:\cygwin\home\[USERNAME]\.ssh. Ketika saya menjalankan ssh(misalnya, ssh -vT [email protected]) saya mendapatkan kesalahan berikut:

OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011 Pemilik atau izin buruk di /home/[USERNAME[/.ssh/config

Bagaimana saya bisa sshmembaca file konfigurasi saya?

Rebecca Scott
sumber

Jawaban:

46

Setelah melakukan seperti di atas, saya selalu mendapatkan ini:

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

dan kesalahan menyala .ssh/config. Jadi saya sudah menjalankan chowndi .sshfolder, dan chmodsekali lagi seperti ini:

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

lalu:

> chmod -R 600 .ssh/

dan akhirnya saya berhasil:

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

Edit (untuk bash di Windows10)

Ketika Anda mendapatkan kesalahan ..

Gagal menambahkan host ke daftar host yang dikenal (/PATH_TO_HOME/USERNAME/.ssh/known_hosts).

Pastikan bahwa known_hosts dapat ditulisi

$ chmod 755 known_hosts

Catatan: Saya yakin Anda hanya perlu menetapkan 600 untuk kunci pribadi Anda

Lalu, coba ssh.

Ketika kamu mendapatkan ..

Tambahkan 'HOST_IP' (RSA) secara permanen ke daftar host yang dikenal.

Anda dapat mengganti mode 600

$ chmod 600 known_hosts

PS : Saya kira ini adalah bug pada Windows 8.

Joaolvcm
sumber
Jawaban yang diterima tidak berhasil untuk saya, tetapi ini berhasil. Terima kasih!
Achal Dave
Juga, ini adalah bug yang cukup aneh. Di komputer saya (W8.1), mengedit file .ssh / config di Vim selalu mengarah ke bug ini. Ini sangat menjengkelkan, karena setiap perubahan pada konfigurasi ssh saya memerlukan menjalankan perintah ini.
Achal Dave
4
Dan hanya untuk menambah keanehan, jika Anda menggunakan Windows versi non-Inggris maka pastikan untuk menggunakan terjemahan lokal "pengguna" saat mengeluarkan perintah ini. Misalnya dalam bahasa Belanda itu menjadi "chown -R: Gebruikers .ssh"
Alexander Kellett
1
Bagi saya, ini berhasil: chown -R m0j0: Users .ssh && chmod -R go-rwx .ssh
m0j0
1
Terima kasih ini bekerja untuk saya juga, dalam bahasa Jerman Anda harus menggunakanchown -R [Username]:Benutzer .ssh/
con
20

Jawaban ini disalin kata demi kata dari https://superuser.com/a/875934/82032 . Ini adalah satu-satunya jawaban yang berfungsi untuk saya setelah peningkatan cygwin baru-baru ini.

Jangan lupakan ACL

Tidak ada yang berhasil untuk saya sampai saya menghapus file ACL dan mengatur ulang izin.

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

#reset permissions
chmod 0600 ~/.ssh/config

Anda dapat menggunakan getfacluntuk melihat ACL saat ini pada file.

getfacl ~/.ssh/config

Sebelum saya menghapus ACL (Rusak):

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

Setelah bekerja)

# file: config
# owner: myusername
# group: None
user::rw-
group::---
other:---
gdw2
sumber
Inilah yang harus saya lakukan setelah memutakhirkan cygwin
blockloop
1
Ini membutuhkan cygwin 1.7.34-6
ClintM
Inilah yang bekerja untuk saya!
Ashutosh Jindal
9

Periksa izin configfile menggunakan lsperintah Cygwin :

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

Mungkin akan seperti ini:

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

File konfigurasi harus milik [USERNAME]. Coba ini:

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

ls -laseharusnya sekarang menunjukkan pemilik yang benar. Jika itu masih tidak berhasil, coba atur ulang mode (izin):

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

Untuk unix & OSX

Cukup sederhana:

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

Untuk Windows

Jika file tersebut adalah tautan simbolis windows (NTFS), hal di atas tidak akan berfungsi. Anda harus menjadikannya file biasa. Saya tidak yakin mengapa.

Jika Anda tidak memiliki openssh atau cygwin, gunakan chocolatey untuk menginstalnya dengan mudah.

choco install cyg-get

Buka Terminal Cygwin yang telah diinstal dengan cokelat dan jalankan (catatan yang ssh-keygenmembuat kunci baru):

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

Verifikasi kunci ada di sana (atau ganti dengan kunci yang Anda inginkan), dan kemudian di Cygwin shell:

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

Atau untuk kasus langka yang Anda gunakan (dan buat kunci dari) paket SSH chocolatey :

chown -R $USER:users  /cygdrive/c/Users/$USER/.ssh
chmod -R 600 /cygdrive/c/Users/$USER/.ssh
Jonathan
sumber
Ini biasanya untuk saya, karena grup biasanya salah pada file.
Alan Krueger
3

Catatan penting jika Windows Anda tidak dalam bahasa Inggris AS: nama grup "pengguna" tergantung lokal. Misalnya, jika Windows Anda dalam bahasa Spanyol, Anda harus mengubah kepemilikan filechown $USER:Usuarios *

RAKK
sumber
1

Tak satu pun dari ini (chmod / chown / icacls / setacl / copyacls / explorer> keamanan) bekerja di cygwin64 / win7 / admin saya, akhirnya ini bekerja dengan cygwin64/ssh -F ~/.ssh/configsolusi lain adalah dengan menggunakan ssh lama di cygwin32 atau ssh in git untuk windows ..

mosh
sumber
Menggunakan -Fakan memecahkan masalah dengan config, tetapi tidak akan menyelesaikan izin untuk kunci pribadi.
Jari Turkia
0

Bagi mereka yang menggunakan noacljalur dengan ~/.sshsolusi sederhana dir adalah membuat tautan simbolis NTFS asli:

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

Dengan noacltidak ada cara untuk mengatur izin selain itu rwxr-xr-xatau rw-r--r--. Karena /hierarki seharusnya tanpa noacl(atau harus dengan acl), Anda dapat membuat direktori di sini dan mengarahkannya ke tempat-tempat yang bermasalah untuk aplikasi Cygwin.

gavenkoa
sumber
1
Mengingat ini adalah direktori, solusi sederhana akan menggunakan persimpangan, karena itu tidak memerlukan hak istimewa yang diperlukan untuk mengatur tautan simbolik. Itu mklink /jsaat itu atau junctionalat dari Sysinternals Suite.
0xC0000022L
0

tldr: Anda mungkin telah membuat konfigurasi sebagai adminstrator

Larutan

Solusi ini mungkin berlebihan jika Anda salah membuat file sebagai admin, dan mencoba menggunakan file dengan izin lokal.

  • Salin konten konfigurasi ssh Anda
  • Hapus file
  • Buka shell baru (lokal - non admin)
  • Arahkan ke jalur tempat konfigurasi Anda disimpan ( biasanya ~/.sshdi PowerShell atau %userprofile%\.sshdalam cmd )
  • Menjalankan notepad .\config

Perintah sederhana (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
}
AP.
sumber