ssh "izin terlalu terbuka" kesalahan

2056

Saya punya masalah dengan mac saya di mana saya tidak bisa menyimpan file apa pun pada disk lagi. Saya harus reboot singa OSX dan mengatur ulang izin pada file dan ACL.

Tapi sekarang ketika saya ingin melakukan repositori saya mendapatkan kesalahan berikut dari ssh:

Permissions 0777 for '/Users/username/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.

Tingkat izin apa yang harus saya berikan ke file id_rsa?

Yannick Schall
sumber
21
Terima kasih telah menanyakan pertanyaannya. Pengalaman yang lebih baik bagi orang yang menulis pesan kesalahan ini untuk menyarankan beberapa konfigurasi yang valid (seperti 600 atau 400 seperti yang disarankan di bawah). Programmer yang tidak menulis cukup pesan kesalahan yang cukup membantu telah menyiksa kita semua selama bertahun-tahun!
George Pligoropoulos
FWIW, ini terkait dengan StrictModesdiaktifkan di sshdserver, dari halaman manual : "StrictModes Menentukan apakah sshd (8) harus memeriksa mode file dan kepemilikan file pengguna dan direktori home sebelum menerima login." - Anda dapat menonaktifkan ini namun tidak disarankan.
masseyb

Jawaban:

3475

Kunci hanya dapat dibaca oleh Anda:

chmod 400 ~/.ssh/id_rsa

Jika Kunci harus dapat dibaca-tulis oleh Anda:

chmod 600 ~/.ssh/id_rsa

600 juga tampak baik-baik saja (bahkan lebih baik dalam kebanyakan kasus, karena Anda tidak perlu mengubah izin file nanti untuk mengeditnya).

Bagian yang relevan dari halaman manual ( man ssh)

 ~/.ssh/id_rsa
         Contains the private key for authentication.  These files contain sensitive 
         data and should be readable by the user but not
         accessible by others (read/write/execute).  ssh will simply ignore a private 
         key file if it is              
         accessible by others.  It is possible to specify a
         passphrase when generating the key which will be used to encrypt the sensitive 
         part of this file using 3DES.

 ~/.ssh/identity.pub
 ~/.ssh/id_dsa.pub
 ~/.ssh/id_ecdsa.pub
 ~/.ssh/id_rsa.pub
         Contains the public key for authentication.  These files are not sensitive and 
         can (but need not) be readable by anyone.
quickshiftin
sumber
300
400 terlalu rendah karena tidak bisa ditulisi oleh pengguna Anda sendiri. 600 sebenarnya direkomendasikan karena memungkinkan pemilik baca-tulis bukan hanya membaca.
jfreak53
8
Saya menemukan hari ini ada kalanya 400 relevan. Misalkan Anda memiliki file authorized_key yang memiliki fitur no-pty et al . Jika file dapat ditulisi, pengguna sebenarnya dapat menimpa file Authorized_key dan mendapatkan akses shell interaktif! Sesuatu yang perlu diingat, meskipun tentu bukan kasus umum bagi kebanyakan orang.
quickshiftin
17
AWS sebenarnya merekomendasikan izin 400 di situs web mereka. Itulah yang saya lakukan pada OS X dan berhasil.
George Mylonas
5
Ini pasti bekerja dan lebih aman. Satu-satunya downside adalah Anda kemudian harus mengubahnya menjadi 600 untuk mengedit. Untuk id_rsa, dan id_rsa.pub saya ragu itu penting karena Anda jarang akan mengedit file-file itu, tetapi untuk otor_keys, itu bisa mengganggu. Terbaik untuk memahami pengorbanan dan mengkonfigurasi setiap sistem secara tepat.
quickshiftin
3
Saya kira itu juga tergantung pada seberapa sering Anda mengeditnya. Banyak orang mengaturnya dan melupakannya, sehingga 400 akan lebih aman dari orang lain dan tindakan Anda sendiri; memodifikasi ke 600 bila perlu. Jika itu bagian dari alur kerja Anda dan ssh-savy Anda, maka mungkin akan lebih menjadi penghalang untuk terus mengubah izin.
vol7ron
99

Menggunakan Cygwin di Windows 8.1, ada perintah yang harus dijalankan:

Pengguna chgrp ~ / .ssh / id_rsa

Maka solusi yang diposting di sini dapat diterapkan, 400 atau 600 adalah OK.

chmod 600 ~ / .ssh / id_rsa

Ref: http://vineetgupta.com/blog/cygwin-permissions-bug-on-windows-8

tan9
sumber
8
tergantung lokal. Saya harus menjalankan "chgrp Użytkownicy ~ / .ssh / id_rsa" karena "Pengguna" tidak melakukan kesalahan pada grup tersebut.
Marcos
Saya harus melakukan ini juga. Direktori cygwin saya berada di lokasi default ( C:\cygwin64) sehingga mungkin mewarisi izin. Aneh bahwa ini tidak terjadi pada laptop lain yang saya miliki.
Zach Thacker
3
@Marcos Saya telah menambahkan jawaban yang berfungsi terlepas dari lokal: stackoverflow.com/a/28647713/67013
thehouse
4
Windows 10. Menggunakan perintah kedua saja. Bekerja seperti pesona.
StalkAlex
Perhatikan bahwa untuk pemasangan dalam bahasa alternatif, grup 'Pengguna' memiliki pengidentifikasi alternatif.
John Rumpel
43

Solusi independen-lokal yang bekerja pada Windows 8.1 adalah:

chgrp 545 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa

GID 545 adalah ID khusus yang selalu merujuk ke grup 'Pengguna', bahkan jika Anda menggunakan kata yang berbeda untuk Pengguna.

rumah
sumber
31

0600 adalah milik saya (dan berfungsi)

Devin Ceartas
sumber
24

AFAIK nilainya adalah:

700 untuk direktori tersembunyi ".ssh" di mana file kunci berada

600 untuk keyfile "id_rsa"

ajaaskel
sumber
19

Saya punya kesalahan di windows 10 saya jadi saya menetapkan izin sebagai berikut dan berfungsi.

Izin untuk id_rsa windows 10

Secara rinci, hapus pengguna / grup lain hingga hanya memiliki 'SISTEM' dan 'Administrator'. Kemudian tambahkan login windows Anda ke dalamnya dengan izin Baca saja.

Perhatikan id_rsafile berada di bawah c:\users\<username>folder.

Supawat Pusavanno
sumber
Saya memiliki masalah yang sama pada Win-10. Berdasarkan penjelasan Anda, tidak jelas apa yang sebenarnya Anda izinkan dan tolak - Saya memiliki "pengguna 'dan' pengguna terotentikasi 'dan Bukan' pengguna spesifik" sebagai opsi + Sistem dan Administrator. Selain itu saya tidak bisa mengetahui cygwin - untuk menginstal atau menggunakan. (?)
Sam-T
2
untuk Win10 perlu memindahkan kunci Anda ke rumah pengguna - ini bekerja dengan sempurna. Saya mencoba memberikan jalan penuh ke kunci dan mengacaukan izin - tidak ada yang berhasil.
Sam-T
@ Sam-T jika Anda tidak dapat melihat nama Anda dalam daftar, Anda dapat menambahkan dengan menekan Edit...lalu tekan Add...lalu ketik nama Anda di kotak teks "Enter the object names to select"lalu tekan Check Namestombol (dan tekan OKdan yang lain OK) maka nama Anda harus terdaftar di Securitytab
Supawat Pusavanno
Saya mungkin dapat menambahkan nama secara khusus - sesuai instruksi Anda. Tapi pertanyaan utama saya adalah - izin apa yang tepat untuk Deny dan Izinkan untuk semua . Sementara itu seperti yang saya sebutkan saya bisa menyelesaikan masalah dengan hanya menambahkan .pemkemyuser directory
Sam-T
16

Ada satu pengecualian untuk persyaratan izin "0x00" pada kunci. Jika kunci dimiliki oleh root dan grup dimiliki oleh grup dengan pengguna di dalamnya, maka itu bisa menjadi "0440" dan setiap pengguna dalam grup itu dapat menggunakan kunci tersebut.

Saya yakin ini akan berfungsi dengan izin apa pun di set "0xx0" tetapi saya belum menguji setiap kombinasi dengan setiap versi. Saya telah mencoba 0660 dengan 5.3p1-84 pada CentOS 6, dan grup ini bukan grup utama pengguna tetapi grup sekunder, dan berfungsi dengan baik.

Ini biasanya tidak dilakukan untuk kunci pribadi seseorang, tetapi untuk kunci yang digunakan untuk otomatisasi, dalam situasi di mana Anda tidak ingin aplikasi dapat mengacaukan kunci tersebut.

Aturan serupa berlaku untuk pembatasan direktori .ssh.

syberghost
sumber
15

berikan 400 izin, jalankan perintah di bawah ini

chmod 400 /Users/username/.ssh/id_rsa

masukkan deskripsi gambar di sini

Sujit Dhamale
sumber
Bagus! Ini memecahkan masalah bagi saya. Terima kasih!
Emanuela Colta
11

Pada Windows 10, chmod dan chgrp cygwin tidak cukup bagi saya. Saya harus mengklik kanan pada file -> Properties -> Security (tab) dan menghapus semua pengguna dan grup kecuali untuk pengguna aktif saya.

Pantai Jared
sumber
Ini hanya solusi yang berfungsi :) Terima kasih Anda menghemat waktu saya
Atul
Saya menemukan bahwa, setelah melakukan ini, saya dapat melakukan ssh dari command prompt Windows normal juga. Tidak perlu menggunakan Cygwin. Bagus!
Atul
8

Inilah yang bekerja untuk saya (di mac)

sudo chmod 600 path_to_your_key.pem 

kemudian :

ssh -i path_to_your_key user@server_ip

Semoga ini bisa membantu

lansanalsm
sumber
5

apa yang berhasil untuk saya

FOLDER Pengguna chgrp

chmod 600 FOLDER

Jerome Ansia
sumber
chgrp: grupo inválido: «Pengguna»
Saya mencoba tetapi terus membuang 'grup tidak valid `: Pengguna' ', mengapa? menggunakan Windows 10, PowerShell
Jason Goal
4

Saya mendapat masalah yang sama setelah migrasi dari mac lain. Dan itu diblokir untuk menghubungkan github dengan kunci saya.

Saya mengatur ulang izin seperti di bawah ini dan berfungsi dengan baik sekarang.

chmod 700 ~/.ssh     # (drwx------)
cd ~/.ssh            
chmod 644 *.pub      # (-rw-r--r--)
chmod 600 id_rsa     # (-rw-------)
Jeff Gu Kang
sumber
4

Windows 10 ssh ke Ubuntu EC2 "izin terlalu terbuka" kesalahan pada AWS

Saya mengalami masalah ini mencoba ssh menjadi contoh Ubuntu EC2 menggunakan file .pem dari AWS.

Di windows ini berfungsi ketika saya memasukkan kunci ini ke dalam folder .ssh

C:\Users\USERNAME\.ssh\private_key

Untuk mengubah pengaturan izin di Windows 10:

Pengaturan File> Keamanan> Tingkat Lanjut

Nonaktifkan warisan

Konversi Izin Warisan Menjadi Izin Eksplisit

Hapus semua entri izin kecuali untuk Administrator

Kemudian dapat terhubung dengan aman.

LM5050
sumber
4

Bagi saya (menggunakan Subsistem Ubuntu untuk Windows) pesan kesalahan berubah menjadi:

 Permissions 0555 for 'key.pem' are too open

setelah menggunakan chmod 400. Ternyata menggunakan root sebagai pengguna default adalah alasannya.

Ubah ini menggunakan cmd:

 ubuntu config --default-user your_username
Daniel Kettemann
sumber
3

Pesan menarik di sini. Sistem Operasi cukup pintar untuk menolak koneksi jarak jauh jika kunci pribadi Anda terlalu terbuka. Ini memahami risiko di mana izin untuk id_rsa terbuka lebar (baca, dapat diedit oleh siapa saja).

{Seseorang dapat mengubah kunci Anda terlebih dahulu dan kemudian membukanya dengan kunci yang sudah dimilikinya}

cd ~/.ssh
chmod 400 id_rsa

Saat bekerja pada beberapa server (non-produksi), kebanyakan dari kita merasa perlu menghubungkan server jauh dengan ssh. Ide yang bagus adalah memiliki kode level aplikasi (mungkin java menggunakan jsch) untuk membuat kepercayaan antar server. Dengan cara ini koneksi akan lebih sedikit kata sandi. Jaga, perl terinstal - seseorang dapat menggunakan modul net ssh juga.

Piyush Baijal
sumber
1

Saya menemukan kesalahan ini saat saya bermain dengan Ansible. Saya telah mengubah izin kunci pribadi ke 600 untuk menyelesaikan masalah ini. Dan itu berhasil!

chmod 600 .vagrant/machines/default/virtualbox/private_key
vildhjarta
sumber
1

Saya mencoba 600 tingkat izin untuk kunci pribadi saya dan itu berhasil untuk saya. chmod 600 privateKey [dev] $ ssh -i privateKey pengguna @ ip berhasil

chmod 755 privateKey [dev] $ ssh -i privateKey pengguna @ ip itu memberikan masalah di bawah ini: Izin 0755 untuk 'privateKey' terlalu terbuka. Diperlukan bahwa file kunci pribadi Anda TIDAK dapat diakses oleh orang lain. Kunci pribadi ini akan diabaikan. Muat kunci "privateKey": izin buruk

deepu kumar singh
sumber
0
I have got the similar issue when i was trying to login to remote ftp server using public keys..        
To solve this issue initially i have done the following process
    Pertama-tama cari lokasi kunci publik karena ketika Anda mencoba masuk ke ftp menggunakan kunci publik ini. pertama-tama kita perlu membuat kunci dan kita mengatur untuk mengatur bahwa kunci izin ke 600.
            Pastikan Anda berada di lokasi yang benar.
            Langkah 1:
            pergi ke lokasi yang benar
            Langkah 2:
            Setelah Anda berada di lokasi yang benar
 perintah: 
     chmod 600 id_rsa

        This has solved my issue.
Ravi Teja Mureboina
sumber
-1

Saya menggunakan VPC di EC2 dan mendapatkan pesan kesalahan yang sama. Saya perhatikan saya menggunakan DNS publik. Saya mengubahnya ke DNS pribadi dan vola !! itu berhasil ...

pengguna3195783
sumber
Amazon merekomendasikan chmod 400, dan menggunakan DNS publik. Lihat dokumentasi di sini: docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
ddri
-2

untuk Win10 perlu memindahkan kunci Anda ke dir rumah pengguna untuk linuxlike os Anda perlu chmod ke 700 suka atau 600 dll.

Fedulov Oleg
sumber
untuk Win10 perlu memindahkan kunci Anda ke rumah pengguna - ini bekerja dengan sempurna. Saya mencoba memberikan jalan penuh ke kunci dan mengacaukan izin - tidak berhasil.
Sam-T