Izin pada kunci pribadi di folder .ssh?

381

Saya mengubah izin di .sshfolder saya dan sekarang ketika saya menggunakan perangkat lunak yang menggunakan kunci pribadi saya, saya harus mengetikkan kata sandi setiap kali. Apa yang seharusnya menjadi izin saya pada id_rsafile saya untuk tidak harus mengetikkan kata sandi setiap kali saya menggunakan aplikasi yang menggunakannya?

Saat ini izin saya disetel ke:

-rw-------@ 1 Jody  staff   114 Nov  4 23:29 config
-rw-------  1 Jody  staff  1743 Oct 21  2009 id_rsa
-rw-------@ 1 Jody  staff   397 Oct 21  2009 id_rsa.pub 
-rw-------@ 1 Jody  staff  3855 Sep 13 22:35 known_hosts
JakeGould
sumber

Jawaban:

640

Biasanya Anda menginginkan izin:

  • .ssh direktori: 700 (drwx------)
  • kunci publik ( .pubfile):644 (-rw-r--r--)
  • kunci pribadi ( id_rsa):600 (-rw-------)
  • terakhir direktori home Anda tidak boleh ditulisi oleh grup atau orang lain (paling banyak 755 (drwxr-xr-x)).

Saya berasumsi bahwa Anda bermaksud harus memasukkan kata sandi sistem / pengguna setiap kali, dan sebelumnya Anda tidak harus melakukannya. Tanggapan cdhowie adalah dengan asumsi Anda menetapkan kata sandi / frasa sandi saat membuat kunci Anda, dan jika Anda melakukannya maka seperti yang dia katakan Anda harus memasukkan kata sandi setiap kali kecuali Anda menggunakan agen ssh.

Hebat
sumber
13
Saya menemukan di tempat lain bahwa jika menggunakan file Authorized_keys, itu harus chmod'd ke 640, yaitu -rw-r -----.
AnneTheAgile
5
Di mana saya dapat menemukan info ini di halaman manual?
Sonique
131
Saya telah kembali ke posting ini sekitar 30 kali sekarang. Aku tidak percaya aku tidak bisa mengingatnya.
JREAM
7
Satu-satunya hal penting adalah bahwa tidak ada dalam .ssh yang dapat ditulisi oleh orang lain dan tidak ada kunci rahasia yang dapat dibaca oleh orang lain.
Markus Kuhn
5
@Cerin mengeksekusi izin pada direktori memberikan kemampuan untuk mendaftar file anak langsung / direktori direktori itu, file di dalam folder tidak "mewarisi" bit eksekusi dari folder induknya.
Thomas
87

Saya berjuang dengan ini selamanya dan akhirnya menemukan apa yang dibutuhkan. Ganti di $USERmana-mana dengan nama pengguna SSH yang ingin Anda masuki di server. Jika Anda mencoba masuk karena rootAnda harus menggunakan /root/.sshdll., Bukan /home/root/.sshseperti itu untuk pengguna non-root.

  • Direktori rumah di server tidak boleh ditulis oleh orang lain: chmod go-w /home/$USER
  • Folder SSH di server membutuhkan 700 izin: chmod 700 /home/$USER/.ssh
  • File Authorized_keys membutuhkan 644 izin: chmod 644 /home/$USER/.ssh/authorized_keys
  • Pastikan yang usermemiliki file / folder dan tidak root: chown user:user authorized_keysdanchown user:user /home/$USER/.ssh
  • Masukkan kunci publik yang dihasilkan (dari ssh-keygen) dalam file pengguna authorized_keysdi server
  • Pastikan direktori home pengguna diatur ke apa yang Anda harapkan dan itu berisi .sshfolder yang benar yang telah Anda modifikasi. Jika tidak, gunakan usermod -d /home/$USER $USERuntuk memperbaiki masalah
  • Akhirnya, restart ssh: service ssh restart
  • Kemudian pastikan klien memiliki file kunci publik dan kunci pribadi di .sshfolder pengguna lokal dan login:ssh [email protected]
Alex W
sumber
Mengenai paragraf pertama Anda, saya dapat ssh dengan kunci publik / pribadi dengan pengguna di kotak linux lokal saya (mis. abc), Berbeda dari pengguna di server jarak jauh (mis [email protected].). Saya hanya harus memastikan bahwa pengguna lokal memiliki file .ssh lokal (mis abc:abc. Tidak root:abc) `
Michael
1
Terima kasih telah meletakkan semua langkah dan perintah untuk pemula, Alex. Milik Anda adalah salah satu jawaban paling membantu di sini.
Nav
6
+1. "File Authorized_keys membutuhkan 644 izin" <= itu penting!
Le Quoc Viet
Jika Anda memberikan mode .ssh direktori 700 , maka tidak ada gunanya memberikan r-- ke grup dan yang lainnya, karena hanya Anda yang dapat "melewati" .ssh lalu (dengan asumsi tidak ada tautan keras untuk file-file ini). Hal yang sama untuk jawaban yang diterima. Default 755 sudah cukup.
user3125367
400 untuk file pem cukup dalam pengalaman saya.
PADA
37

Juga pastikan bahwa direktori home Anda tidak dapat ditulisi oleh pengguna lain.

chmod g-w,o-w ~

Felipe Alvarez
sumber
8
FYI, perintah ini mengasumsikan Anda login sebagai pengguna dan tidak me
Alex W
6

Izin seharusnya tidak ada hubungannya dengan ini. Kunci pribadi Anda dienkripsi dengan kata sandi, jadi Anda harus memasukkannya agar kunci pribadi dapat didekripsi dan dapat digunakan.

Anda mungkin mempertimbangkan menjalankan ssh agent, yang dapat men-cache kunci yang didekripsi dan akan memasok mereka ke aplikasi yang membutuhkannya.

cdhowie
sumber
Terima kasih atas info tambahan tentang agen ssh. Sepertinya ada satu yang dibangun ke dalam Leopard jadi saya pikir saya akan melakukannya. Memiliki sedikit masalah dengan itu tetapi saya akan mengajukan pertanyaan lain.
5
Jangan meremehkan izin. Mereka pasti masih ikut bermain.
Alex W
@AlexW Mereka ikut bermain dengan aspek lain dari ssh, tetapi tidak yang ditanyakan dalam pertanyaan.
cdhowie
Jika Anda tidak memiliki kata sandi pada kunci pribadi (yang menggunakan skrip yang disebut remote otomatis), itu tidak akan membantu Anda. Izin diperlukan di sini.
nerdoc
"Saya harus mengetikkan kata sandi setiap kali. Apa yang harus saya dapatkan pada file id_rsa saya untuk tidak harus mengetik kata sandi setiap kali saya menggunakan aplikasi yang menggunakannya?"
Craig Hicks
4

Felipe benar - direktori yang berisi direktori .ssh Anda tidak boleh ditulisi oleh grup atau lainnya. Jadi chmod go-w ~ini adalah hal logis berikutnya untuk dicoba jika Anda masih diminta kata sandi ketika ssh'ing setelah berjalan ssh-keygen -t rsa; cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys, dengan asumsi Anda tidak menetapkan frasa sandi dalam perintah ssh-keygen, dan direktori .ssh Anda ada di direktori home Anda.

mikentalk
sumber