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 hmac-md5-etm@openssh.com none
debug1: kex: client->server aes128-ctr hmac-md5-etm@openssh.com 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).

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

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.


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

Dengan kunci publik 400 atau 600 saya mendapatkan format yang tidak validssh-add ~/.ssh/id_rsa.pub
langsung


23

Setelah menjalankan perintah di bawah ini berfungsi untuk saya

sudo chmod 600 /path/to/my/key.pem

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.


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.


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>

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 git@gitee.com:someone/somerepo.git "

Saya memperbaiki masalah ini hanya dengan mengubah mode ke 600.

chmod 600 $PATH_TO_RSA/id_rsa

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


2

chmod 400 /etc/ssh/* bekerja untukku.


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>>

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


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 

-8

Saya menghapus .pub file, dan itu berhasil.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.