Kunci SSH: "Izin 0644 untuk 'id_rsa.pub' terlalu terbuka." di mac

261

Saya membuat pasangan kunci ssh pada mac saya dan menambahkan kunci publik ke server ubuntu saya (pada kenyataannya, ini adalah mesin virtual di mac saya), tetapi ketika saya mencoba masuk ke server ubuntu, ia mengatakan:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/tudouya/.ssh/vm/vm_id_rsa.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
Permission denied (publickey,password).

Saya telah mencoba banyak cara untuk menyelesaikan ini, mengubah mode file kunci, mengubah mode folder, karena beberapa jawaban di stackoverflow, tetapi tidak berhasil.
izin file kunci:

vm dir:
drwxr-xr-x   4 tudouya  staff    136  4 29 10:37 vm

key file:
-rw-------  1 tudouya  staff  1679  4 29 10:30 vm_id_rsa
-rw-r--r--  1 tudouya  staff   391  4 29 10:30 vm_id_rsa.pub

tolong beri saya beberapa ide ... =========================================

Saya tulis informasi host ke ssh_config:

Host ubuntuvm
    Hostname 10.211.55.17
    PreferredAuthentications publickey
    IdentityFile /Users/tudouya/.ssh/vm/vm_id_rsa.pub

Saya menjalankan perintah "ssh -v ubuntuvm", ini menampilkan:

ssh -v ubuntuvm
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 103: Applying options for *
debug1: /etc/ssh_config line 175: Applying options for ubuntuvm
debug1: Connecting to 10.211.55.17 [10.211.55.17] port 22.
debug1: Connection established.
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub type 1
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubuntu-8
debug1: match: OpenSSH_6.6.1p1 Ubuntu-8 pat OpenSSH*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr [email protected] none
debug1: kex: client->server aes128-ctr [email protected] none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 55:6d:4f:0f:23:51:ac:8e:70:01:ec:0e:62:9e:1c:10
debug1: Host '10.211.55.17' is known and matches the RSA host key.
debug1: Found key in /Users/tudouya/.ssh/known_hosts:54
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
debug1: Server accepts key: pkalg ssh-rsa blen 279
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/tudouya/.ssh/vm/vm_id_rsa.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
debug1: No more authentication methods to try.
Permission denied (publickey,password).
土豆 丫
sumber
1
Bisakah Anda mengedit pertanyaan Anda untuk memasukkan perintah ssh spesifik yang sedang Anda jalankan? Jika file kunci yang dimaksud ditentukan dalam file konfigurasi ssh, harap sertakan juga baris yang relevan dari file konfigurasi tersebut.
Kenster
Bagi saya adalah "izin buruk"
lambang
Saya menghadapi masalah ini ketika menambahkan -i id_rsa.pubperintah ssh digunakan untuk koneksi Tampaknya memaksa untuk menggunakan beberapa kunci publik di pasukan perintah ssh untuk meminta kata sandi (bahkan ketika frasa sandi kosong, setidaknya pada kasus saya)
Diego Andrés Díaz Espinoza

Jawaban:

148
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub type 1

Tampaknya Anda mencoba menggunakan file kunci yang salah. File dengan ekstensi ".pub" adalah file kunci publik . File yang sesuai tanpa ekstensi ".pub" adalah file kunci pribadi . Ketika Anda menjalankan klien ssh untuk terhubung ke server jauh, Anda harus memberikan file kunci pribadi ke klien ssh.

Anda mungkin memiliki baris di .ssh/configfile Anda (atau /etc/ssh_config) yang terlihat seperti ini:

IdentityFile .../.ssh/vm/vm_id_rsa.pub

Anda harus menghapus ekstensi ".pub" dari nama file:

IdentityFile .../.ssh/vm/vm_id_rsa
Kenster
sumber
Saya mengalami masalah ini dengan SQLPro dan salah memilih file publik ( .pub) alih-alih file pribadi.
Henry
1
Saya mendapatkan kesalahan ini ketika saya melakukan ssh -i id_ed25519.pubsementara melakukan ssh -i id_ed25519pekerjaan
Boris
2
Terima kasih telah menyelamatkan saya di sini.
Abner
Cemerlang! Terima kasih!
Alliswell
575

Saya sarankan Anda melakukannya:

chmod 400 ~ / .ssh / id_rsa

Bagi saya pekerjaan itu baik-baik saja.

Rick Benetti
sumber
33
“Permissions 0644 for 'id_rsa.pub' are too open."dan kuncinya karenanya diabaikan. Ini mungkin karena saya menyalin file kunci, dari PC saya yang lain. Tetapi memperbaiki izin memperbaiki masalah ini. Terima kasih!
parasrish
2
@ xoxn - 1'w3k4n Mengapa ini sangat buruk? Masuk akal jika orang menyalin atau mengelola akses baca-tulis mereka ke file sensitif ini dengan buruk, bahwa mereka harus diperbaiki.
Gerard
5
Ini bukan lakban. Jika Anda menyalin id Anda, ini masuk akal.
ALisboa
Bekerja untuk saya sebagai solusi saat menyalin kunci ssh dari komputer lama!
Nick
1
Bekerja di WSL juga
h-rai
59

Kunci harus dapat dibaca oleh pengguna yang login.

Coba ini:

chmod 400 ~/.ssh/Key file
chmod 400 ~/.ssh/vm_id_rsa.pub
pengguna3029620
sumber
Dengan kunci publik 400 atau 600 saya mendapatkan format yang tidak validssh-add ~/.ssh/id_rsa.pub
langsung
53
chmod 400 path/to/filename

Ini bekerja untuk saya. Ketika saya melakukan file ini, saya dapat terhubung ke instance EC2 saya

Muhammad Wajahat Anwar
sumber
Ini kesenangan saya :) Terima kasih
Muhammad Wajahat Anwar
2
Ini jawabannya
Mladen Danic
23

Setelah menjalankan perintah di bawah ini berfungsi untuk saya

sudo chmod 600 /path/to/my/key.pem
Ashok
sumber
20

Dalam kasus saya, itu adalah file .pem. Ternyata berlaku juga untuk itu. Mengubah izin file dan berhasil.

chmod 400 ~/.ssh/dev-shared.pem

Terima kasih untuk semua yang telah membantu di atas.

Vaibhav Tripathi
sumber
13

Jika kunci ada di direktori ~ / .ssh, gunakan

chmod 400 ~ / .ssh / id_rsa

Jika kunci berada di direktori yang berbeda, gunakan

chmod 400 directory_path / id_rsa

Ini berhasil untuk saya.

Anirban
sumber
2
Bagaimana ini meningkatkan jawaban lain?
Nico Haase
2
bukan kunci pub yang harus dilindungi, adalah kunci pribadi
Picarus
Kunci pribadi harus dilindungi.
bashan
Ini bekerja untuk saya. Saya pikir chmod 400 ~/.ssh/id_rsainilah yang Anda maksud dengan @banban. Seperti yang dinyatakan di atas: File dengan ekstensi ".pub" adalah file kunci publik. File yang sesuai tanpa ekstensi ".pub" adalah file kunci pribadi. Kita perlu melindungi yang pribadi.
naveenKumar
Diedit jawabannya. Itu harus menjadi kunci pribadi.
Anirban
12

Banyak jawaban serupa tetapi tidak ada penjelasan ...

Kesalahan dilemparkan karena izin file kunci pribadi terlalu terbuka. Ini adalah risiko keamanan.

Ubah izin pada file kunci pribadi menjadi minimal (hanya baca oleh pemilik)

  1. Ubah pemilik chown <unix-name> <private-key-file>
  2. Tetapkan izin minimal (hanya baca untuk pemilik file) chmod 400 <private-key-file>
James Wierzba
sumber
7

Sedangkan bagi saya, mode default id_rsaadalah 600, yang berarti readabledan writable.

Setelah saya mendorong file ini ke git repo dan menariknya dari pc lain, kadang-kadang mode file kunci pribadi menjadi -rw-r--r--.

Ketika saya menarik repo dengan ssh setelah menentukan file kunci pribadi, gagal dan meminta peringatan yang sama dengan Anda. Berikut ini adalah skrip saya.

ssh-agent bash -c "ssh-add $PATH_OF_RSA/id_rsa; \
git pull [email protected]:someone/somerepo.git "

Saya memperbaiki masalah ini hanya dengan mengubah mode ke 600.

chmod 600 $PATH_TO_RSA/id_rsa
W.Perrin
sumber
6

memberikan izin 400 menjadikan kunci pribadi dan tidak dapat diakses oleh seseorang yang tidak dikenal. Itu membuat kunci sebagai yang terlindungi.

chmod 400 /Users/tudouya/.ssh/vm/vm_id_rsa.pub
Himanshi Singh
sumber
2

chmod 400 /etc/ssh/* bekerja untukku.

Michal Šípek
sumber
3
Anda dapat melakukan ini selama Anda menyadari bahwa Anda memengaruhi semua kunci di direktori.
J2N
2

Jika Anda menggunakan file .ssh / config, cobalah

chmod 0400 .ssh/config

kemudian:

chmod 0400 .ssh/<<KEYFILE_PATH>>
Shell_Leko
sumber
2

Mereka yang menyarankan chmod 400 id_rsa.pub sama sekali tidak terdengar benar. Sangat mungkin bahwa op menggunakan kunci pub daripada kunci pribadi untuk ssh.

Jadi mungkin sesederhana ssh -i /Users/tudouya/.ssh/vm/vm_id_rsa (the private key) user@hostuntuk memperbaikinya.

--- perbarui ---

Lihat artikel ini https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2 untuk cara mengatur kunci ssh

Qiulang
sumber
Bisa jadi, meskipun dalam kasus saya ketika saya mencari masalah ini dan mendapatkan jawaban chmod 400 adalah apa yang saya butuhkan untuk menyelesaikan masalah saya. Terima kasih pada semua yang telah membantu!
J2N
1

Jalankan di bawah ini untuk pem Anda

sudo chmod 600 /path/to/my/key.pem 
Pravin
sumber
-8

Saya menghapus .pub file, dan itu berhasil.

pengguna2942483
sumber
1
Menghapus file .pub tidak diperlukan. Ini juga berarti Anda tidak memiliki catatan kunci publik pada mesin Anda untuk digunakan nanti.
Henry
1
Jika Anda memiliki OpenSSH, Anda dapat membuat ulang file kunci publik yang hilang dari kunci pribadi dengan menggunakan ssh-keygen -i -f /path/to/private.key > /desired/path/to/public.key. Jadi, itu tidak benar-benar hilang. :)
dannysauer