Apakah saya tetap bisa menggunakan kunci SSH dengan frasa sandi kosong?


34

Ketika saya pertama kali belajar cara membuat kunci ssh, tutorial yang saya baca semua menyatakan bahwa frasa sandi yang baik harus dipilih. Tetapi baru-baru ini, ketika menyiapkan proses daemon yang perlu ssh ke komputer lain, saya menemukan bahwa satu-satunya cara (tampaknya) untuk memiliki kunci yang tidak perlu saya auth pada setiap boot adalah membuat kunci dengan kosong frasa sandi. Jadi pertanyaan saya adalah, apa masalah dengan menggunakan kunci tanpa frasa sandi?

Jawaban:


38

Kunci tanpa frasa sandi bergantung pada tidak ada orang lain yang bisa mendapatkan kunci itu (yang tidak akan bisa mendapatkan sumber daya yang diberikannya pula). Jadi, jika kuncinya memberikan akses ke mesin di sebelahnya, dan kedua mesin memiliki tingkat keamanan elektronik dan fisik yang sama, maka itu bukan masalah besar.

Di sisi lain, jika kunci Anda adalah pada mesin dengan keamanan yang buruk (mungkin memiliki banyak pengguna yang tidak dipercaya, mudah diakses secara fisik, atau tidak diperbarui dengan baik dengan rezim tambalannya), maka Anda mungkin tidak Saya tidak ingin menyimpan kunci tanpa frasa sandi di sana.

Pada akhirnya, tergantung pada kepercayaan pada pengaturan Anda dan menimbang risiko / biaya untuk melakukannya - jika Anda bisa cukup yakin bahwa penyerang tidak secara realistis lebih mudah untuk mendapatkan akses ke kunci daripada ke sumber daya kunci memberi Anda akses ke , maka kamu baik-baik saja. Jika Anda tidak memiliki kepercayaan diri itu, Anda mungkin harus memperbaiki alasan mengapa :)


Hanya orang tepercaya yang akan memiliki akses ke mesin dengan kunci, jadi saya rasa itu menjawab pertanyaan saya. Terima kasih.
mozillalives

11

solusi lain, meningkatkan keamanan sambil mempermudah Anda, jadi Anda tidak perlu mengetikkan kata sandi sepanjang waktu:

jika Anda ingin mengenkripsi kunci pribadi Anda, Anda dapat menggunakan ssh-agentdi workstation Anda untuk 'cache' kunci yang tidak dienkripsi. ketika Anda ingin menyimpan kunci dekripsi Anda, Anda menjalankan ssh-add ~/.ssh/id_rsaatau apa pun nama kunci pribadi Anda. Anda akan dimintai kata sandi, dan kunci yang didekripsi akan tersedia untuk koneksi ssh Anda sampai Anda keluar, mematikan ssh-agentatau mematikan.

Anda dapat killmenyimpan kunci dengan ssh-agent -kdan Anda dapat menetapkan seumur hidup untuk kunci yang akan di memori dengan ssh-agent -t [seconds]begitu misalnya; jika Anda tidak ingin kunci Anda didekripsi selamanya, tetapi Anda ingin melakukan banyak ssh-ing di sekitar host Anda, Anda dapat mengatur batas waktu menjadi 5-10 menit. jadi Anda tidak perlu terus memasukkan kata sandi kunci Anda.

sekali lagi, ini semua berkaitan dengan seberapa yakin Anda terhadap keamanan / workstation / Anda, yang, jika Anda satu-satunya yang memiliki akses ke sana, dan Anda memiliki kata sandi lokal yang cukup aman, dan Anda tidak mengundang eksploit dan rootkit pada diri Anda, kunci pribadi tanpa frasa sandi Anda cukup aman.

jika Anda seperti saya, dan Anda menyimpan kunci pribadi Anda di thumb-drive, Anda pasti akan ingin mengenkripsi itu, meskipun itu hanya kunci pribadi (yang terpisah dari yang saya gunakan di workstation saya, jadi jika saya kehilangan kunci saya, saya dapat dengan mudah menghapus kunci publik thumb-drive dari ~/.ssh/authorized_keysdaftar server saya , yang juga memunculkan / excellent / alasan untuk menambahkan komentar BERMANFAAT ke kunci publik Anda)

dalam respons Anda terhadap jawaban sebelumnya, Anda hanya mengatakan orang yang Anda percayai memiliki akses ke mesin dengan kunci. saya hanya ingin mengklarifikasi bahwa kunci pribadi Anda TIDAK perlu ada di server yang Anda sambungkan, jika itu yang Anda lakukan. hanya kunci publik Anda yang perlu ada di server, dan itu bukan masalah, itulah sebabnya itu adalah kunci 'publik'.

oh, saya lupa menyebutkan; Saya memulai ssh-agentketika saya mulai X, jika tidak, kunci de-crypted saya simpan dengan ssh-addtidak dipertahankan melalui xtermsesi yang berbeda , dan saya harus memasukkan kembali kata sandi setiap kali saya menutup xtermsaya diluncurkan ssh-addmasuk dalam ~/.xinitrcfile saya , saya punya:

if [ -x /usr/bin/ssh-agent ]; then
   eval $(/usr/bin/ssh-agent)
fi

saya memiliki panggilan untuk ssh-agentdibungkus evalkarena ssh-agent mengembalikan beberapa variabel lingkungan yang perlu ditetapkan ketika dijalankan, dan dijalankan dari ~/.xinitrc, variabel lingkungan konstan sepanjang sesi X.


Ya - Saya tahu saya hanya perlu mengunggah kunci publik. Hanya saja saya menghubungkan satu server ke yang lain, itulah sebabnya saya menyebutkan itu. Tetapi terima kasih telah menuliskan jawaban yang jelas dan bijaksana ini.
mozillalives

baik, jika Anda menggunakan ssh-agentdan menggunakannya ssh -A -i privkey user@hostakan memungkinkan penerusan agen ssh, yang akan memungkinkan Anda untuk mengakses server dari server awal, tanpa menempatkan kunci pribadi Anda di server pertama. rantai ssh tidak disarankan, bahkan tanpa penerusan kunci ssh diaktifkan, dan ssh -Amemiliki masalah keamanannya sendiri. tidak ada alasan kunci di server tidak dapat dienkripsi, sedangkan kunci di workstation Anda adalah frasa sandi.
cpbills

3

Anda dapat melihat pertanyaan serupa yang saya tanyakan tentang kunci pribadi SSL untuk server web. Pada dasarnya, ada tiga opsi:

  1. Lindungi kunci dengan izin sistem file.
  2. Gunakan kunci yang dilindungi kata sandi dan masukkan kunci secara manual di setiap restart.
  3. Gunakan kunci yang dilindungi kata sandi dan simpan kunci di sistem file untuk secara otomatis memulai kembali.

Masing-masing cacat, jadi itu semua tergantung pada apa yang paling Anda takuti.


1

Untuk akses otomatis, yang seperti yang Anda katakan memerlukan kunci frasa sandi, saya selalu menggunakan opsi tambahan dari otor_keys (lihat sshd (8)) untuk membatasi perintah yang dapat dijalankan.

Biasanya saya memberikan skrip yang ditulis dengan hati-hati di ujung jarak jauh, yang melakukan persis pekerjaan (atau pekerjaan - dapat melihat parameter) yang saya ingin diizinkan.

Kemudian saya juga menguncinya ke alamat IP yang dapat terhubung dengan kunci itu (bukan 100% sangat mudah, tetapi baik-baik saja dengan pembatasan perintah juga.)


Poin luar biasa - jika Anda merasa perlu menggunakan kunci yang tidak terlindungi, hal terbaik yang dapat Anda lakukan adalah menguncinya!
MikeyB

1

Selama tidak ada orang selain Anda yang memiliki akses ke kunci, Anda tidak memerlukan kata sandi. Bahkan, Anda tidak dapat menggunakan kata sandi pada kunci yang digunakan oleh perangkat lunak otomatis.


0

Jika Anda ingin menggunakan ssh untuk melakukan segala jenis prosedur otomatis - Saya sedang memikirkan pemeriksaan Nagios - maka Anda mungkin tidak ingin menggunakan kata sandi.

Dalam situasi ini Anda mungkin tidak akan menggunakan ini di luar LAN, dan Anda akan memiliki kunci disimpan dengan aman di server melakukan prosedur.

Kebanyakan tutorial yang membahas SSH akan mengantisipasi seseorang yang masuk dari jaringan eksternal, mungkin dari komputer yang tidak aman, dalam hal ini sarannya masuk akal.

Pada dasarnya, kecuali Anda tahu ada alasan kuat untuk tidak melakukannya, buat frasa sandi. Menjadi terlalu malas untuk mengetik kata sandi Anda setiap kali mungkin menjadi alasan yang cukup baik untuk Anda :-)


Bahkan jika mereka masuk dari jaringan eksternal, bagaimana hal itu membuat perbedaan? Hanya masalah keamanan komputer klien, frasa sandi ditangani di sisi klien, bukan?
njsg

Hingga laptop klien Anda dicuri dan digunakan untuk melanggar batas Anda sebelum ada yang punya kesempatan untuk mencabut kunci SSH. Frasa sandi pada kunci akan memberi Anda lebih banyak waktu untuk mencabut kunci.
dunxd

Jadi, seperti saya katakan, "Hanya masalah keamanan komputer klien".
njsg
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.