Ketahui Ins dan Keluar dari OpenSSH pada PC Linux Anda
Kami telah memuji kebaikan SSH berkali-kali, untuk keselamatan dan akses jauh. Mari lihat pada pelayan itu sendiri, beberapa aspek "penyelenggaraan" yang penting, dan beberapa sifat yang boleh menambah pergolakan kepada perjalanan yang lancar.
Walaupun kami telah menulis panduan ini dengan Linux, ini juga boleh digunakan untuk OpenSSH dalam Mac OS X dan Windows 7 melalui Cygwin.
Mengapa Ia Selamat
Kami telah menyebut banyak kali bagaimana SSH adalah cara yang baik untuk berhubung dengan selamat dan data terowong dari satu titik ke yang lain. Mari kita lihat dengan ringkas tentang bagaimana keadaan berfungsi supaya anda mendapat idea yang lebih baik tentang mengapa perkara-perkara boleh menjadi kadang-kadang pelik.
Apabila kami memutuskan untuk memulakan sambungan ke komputer lain, kami sering menggunakan protokol yang mudah untuk digunakan. Telnet dan FTP kedua-duanya datang ke minda. Kami menghantar maklumat ke pelayan jauh dan kemudian kami mendapat pengesahan mengenai sambungan kami. Untuk mewujudkan beberapa jenis keselamatan, protokol ini sering menggunakan kombinasi nama pengguna dan kata laluan. Ini bermakna mereka benar-benar selamat, bukan? Salah!
Jika kita memikirkan proses penghubung kami sebagai mel, maka menggunakan FTP dan Telnet dan sebagainya tidak seperti menggunakan sampul surat standard. Ia lebih seperti menggunakan poskad. Sekiranya seseorang berlaku di tengah-tengah, mereka dapat melihat semua maklumat, termasuk alamat kedua-dua koresponden dan nama pengguna dan kata laluan dihantar. Mereka kemudian boleh menukar mesej, menyimpan maklumat yang sama, dan menyamar sebagai seorang wartawan atau yang lain. Ini dikenali sebagai serangan "man-in-the-middle", dan bukan hanya berkompromi dengan akaun anda, tetapi ia menimbulkan persoalan setiap mesej yang dihantar dan fail yang diterima. Anda tidak boleh pasti jika anda bercakap dengan pengirim atau tidak, dan walaupun anda, anda tidak boleh memastikan tiada siapa yang melihat segala-galanya di antara.
Sekarang, mari lihat enkripsi SSL, jenis yang menjadikan HTTP lebih selamat. Di sini, kami mempunyai pejabat pos yang mengendalikan surat-menyurat, yang memeriksa untuk melihat apakah penerima anda adalah yang dia mendakwa, dan mempunyai undang-undang yang melindungi mel anda daripada dilihat. Ia lebih selamat secara keseluruhan, dan pihak berkuasa pusat - Verisign adalah satu, untuk contoh HTTPS kami - memastikan bahawa orang yang anda menghantar mel untuk memeriksa. Mereka melakukan ini dengan tidak membenarkan poskad (credential tidak diskriptif); Sebaliknya mereka mandat sampul surat yang sebenar.
Akhir sekali, mari kita lihat SSH. Di sini, persediaan agak berbeza. Kami tidak mempunyai pengesah pusat di sini, tetapi perkara-perkara masih selamat. Itu kerana anda menghantar surat kepada seseorang yang alamatnya anda sudah tahu - katakan, dengan berbual dengan mereka di telefon - dan anda menggunakan beberapa matematik yang benar-benar mewah untuk menandatangani sampul surat anda. Anda menyerahkannya kepada abang, teman wanita, ayah, atau anak perempuan anda untuk membawanya ke alamat, dan hanya jika perlawanan matematik mewah penerima anda menganggap bahawa alamat itu sepatutnya. Kemudian, anda mendapat surat kembali, juga dilindungi dari mata yang prying oleh matematik yang hebat ini. Akhirnya, anda menghantar bukti kelayakan anda dalam satu lagi sampul algoritmikal yang terpesona secara rahsia ke destinasi. Jika matematik tidak sepadan, kita boleh mengandaikan bahawa penerima asal berpindah dan kita perlu mengesahkan alamat mereka sekali lagi.
Dengan penjelasan selama ini, kami fikir kami akan memotongnya di sana. Jika anda mempunyai lebih banyak wawasan, jangan ragu untuk bersembang dalam komen, sudah tentu. Buat masa sekarang, mari lihat ciri paling relevan SSH, pengesahan tuan rumah.
Kunci Tuan Rumah
Pengesahan tuan rumah pada dasarnya adalah bahagian di mana seseorang yang anda percayai mengambil sampul (disekat dengan matematik ajaib) dan mengesahkan alamat penerima anda. Ia adalah penerangan yang sangat terperinci tentang alamat itu, dan ia berdasarkan beberapa matematik rumit yang kita akan melangkaui hak. Terdapat beberapa perkara penting untuk diambil dari ini, walaupun:
- Memandangkan tiada pihak berkuasa pusat, keselamatan sebenar terletak pada kunci tuan rumah, kunci awam dan kunci peribadi. (Kekunci kedua terakhir ini dikonfigurasi apabila anda diberikan akses kepada sistem.)
- Biasanya, apabila anda menyambung ke komputer lain melalui SSH, kunci hos disimpan. Ini membuat tindakan masa depan lebih cepat (atau kurang verbose).
- Jika kunci tuan rumah berubah, kemungkinan besar anda akan dimaklumkan dan anda harus berhati-hati!
Oleh kerana kekunci hos digunakan sebelum pengesahan untuk menubuhkan identiti pelayan SSH, anda harus memastikan kunci sebelum anda menyambungkan. Anda akan melihat dialog pengesahan seperti di bawah.
Anda tidak perlu bimbang! Selalunya apabila keselamatan menjadi kebimbangan, akan ada tempat khas bahawa kunci hos (cap jari ECDSA di atas) dapat disahkan. Dalam usaha sama dalam talian, seringkali ia akan berada di laman web log masuk yang selamat sahaja. Anda mungkin perlu (atau memilih!) Telefon jabatan IT anda untuk mengesahkan kunci ini melalui telefon. Saya pernah mendengar beberapa tempat di mana kunci adalah pada lencana kerja anda atau pada senarai "Nombor Kecemasan" khas. Dan, jika anda mempunyai akses fizikal ke mesin sasaran, anda juga boleh menyemak sendiri!
Memeriksa Kekunci Hos Sistem Anda
Terdapat 4 jenis jenis algoritma penyulitan yang digunakan untuk membuat kunci, tetapi lalai untuk OpenSSH pada awal tahun ini adalah ECDSA (dengan beberapa alasan yang baik). Kami akan menumpukan perhatian pada hari ini. Berikut adalah arahan yang boleh anda jalankan di pelayan SSH yang anda mempunyai akses ke:
ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key.pub -l
Keluaran anda harus mengembalikan sesuatu seperti ini:
256 ca: 62: ea: 7c: e4: 9e: 2e: a6: 94: 20: 11: db: 9c: 78: c3: 4c /etc/ssh/ssh_host_ecdsa_key.pub
Nombor pertama ialah bit-panjang kunci, maka kunci itu sendiri, dan akhirnya anda mempunyai fail yang disimpan. Bandingkan bahagian tengah itu kepada apa yang anda lihat apabila anda diminta untuk log masuk dari jauh. Ia sepatutnya sepadan, dan anda semua ditetapkan. Jika tidak, maka sesuatu yang lain boleh berlaku.
Anda boleh melihat semua tuan rumah yang telah anda sambungkan melalui SSH dengan melihat fail known_hosts anda. Ia biasanya terletak di:
~ / .ssh / known_hosts
Anda boleh membukanya dalam mana-mana editor teks. Sekiranya anda melihat, cuba perhatikan bagaimana kunci disimpan. Mereka disimpan dengan nama komputer hos (atau alamat web) dan alamat IPnya.
Mengubah Kekunci dan Masalah Host
Terdapat beberapa sebab mengapa kekunci tuan rumah berubah atau mereka tidak sepadan dengan apa yang log masuk dalam fail known_hosts anda.
- Sistem telah dipasang semula / dikonfigurasi semula.
- Kekunci tuan rumah telah diubah secara manual disebabkan oleh protokol keselamatan.
- Server OpenSSH dikemaskinikan dan menggunakan piawaian yang berbeza kerana isu keselamatan.
- Sewa IP atau DNS berubah. Ini selalunya bermaksud anda cuba mengakses komputer yang berbeza.
- Sistem itu telah dikompromikan dalam beberapa cara supaya kunci tuan rumah berubah.
Kemungkinan besar, isu ini adalah salah satu daripada tiga yang pertama, dan anda boleh mengabaikan perubahan itu. Sekiranya pajakan IP / DNS berubah, mungkin ada masalah dengan pelayan dan anda boleh dialihkan ke mesin lain. Jika anda tidak pasti apa sebab perubahan itu maka anda sepatutnya mengandaikan ia adalah yang terakhir dalam senarai.
Bagaimana OpenSSH Mengendalikan Host yang Tidak Diketahui
OpenSSH mempunyai tetapan untuk bagaimana ia mengendalikan tuan rumah yang tidak diketahui, yang ditunjukkan dalam pembolehubah "StrictHostKeyChecking" (tanpa petikan).
Bergantung pada konfigurasi anda, sambungan SSH dengan tuan rumah yang tidak diketahui (kunci yang belum ada dalam fail known_hosts anda) boleh pergi tiga cara.
- StrictHostKeyChecking ditetapkan tidak; OpenSSH secara automatik akan menyambung ke pelayan SSH tanpa mengira status utama tuan rumah. Ini tidak selamat dan tidak disyorkan, kecuali jika anda menambah sekumpulan tuan rumah selepas memasang semula OS anda, selepas itu anda akan mengubahnya kembali.
- StrictHostKeyChecking bersedia untuk bertanya; OpenSSH akan menunjukkan kepada anda kekunci tuan rumah yang baru dan meminta pengesahan sebelum menambahkannya. Ia akan menghalang sambungan daripada menukar kekunci host. Ini adalah lalai.
- StrictHostKeyChecking ditetapkan kepada ya; Sebaliknya "tidak," ini akan menghalang anda daripada menyambung ke mana-mana hos yang belum ada dalam fail known_hosts anda.
Anda boleh menukar pembolehubah ini dengan mudah pada baris arahan dengan menggunakan paradigma berikut:
ssh -o 'StrictHostKeyChecking [option]' user @ host
Gantikan [pilihan] dengan "tidak," "tanya," atau "ya." Perhatikan bahawa terdapat petikan lurus tunggal yang mengelilingi pemboleh ubah ini dan penetapannya. Ganti pengguna @ hos dengan nama pengguna dan nama hos pelayan yang anda sambungkan. Sebagai contoh:
ssh -o 'StrictHostKeyChecking bertanya' [email protected]
Halang yang Disekat Kerana Mengubah Kekunci
Sekiranya anda mempunyai pelayan yang cuba anda akses yang mempunyai kuncinya sudah berubah, konfigurasi default OpenSSH akan menghalang anda daripada mengaksesnya. Anda boleh menukar nilai StrictHostKeyChecking untuk tuan rumah itu, tetapi itu tidak akan sepenuhnya, dengan teliti, selamat dipastikan, apakah itu? Sebaliknya, kita hanya boleh mengeluarkan nilai yang menyinggung dari fail known_hosts kami.
Itulah perkara yang hodoh yang ada pada skrin anda. Untungnya, sebab kami ini adalah OS yang telah dipasang semula. Jadi, mari zum masuk pada barisan yang kita perlukan.
Di sana kita pergi. Lihat bagaimana ia memetik fail yang perlu kita edit? Ia juga memberi kami nombor garisan! Jadi, mari buka fail itu di Nano:
Inilah kunci yang menyinggung kami, dalam baris 1. Yang perlu kita lakukan adalah menekan Ctrl + K untuk memotong seluruh baris.
Itu lebih baik! Jadi, sekarang kita tekan Ctrl + O untuk menulis (simpan) fail itu, kemudian Ctrl + X untuk keluar.
Sekarang kita mendapat sambutan bagus, yang mana kita hanya boleh bertindak balas dengan "ya."
Mewujudkan Kekunci Tuan Baru
Untuk rekod, ada benar-benar tidak terlalu banyak alasan untuk anda menukar kunci host anda sama sekali, tetapi jika anda pernah mencari keperluan, anda boleh melakukannya dengan mudah.
Pertama, tukar ke direktori sistem yang sesuai:
cd / etc / ssh /
Ini biasanya di mana kekunci tuan rumah global, walaupun beberapa distro telah meletakkannya di tempat lain. Apabila ragu semak dokumentasi anda!
Seterusnya, kami akan memadamkan semua kekunci lama.
sudo rm / etc / ssh / ssh_host_ *
Sebagai alternatif, anda mungkin mahu memindahkannya ke direktori sandaran yang selamat. Hanya pemikiran!
Kemudian, kita boleh memberitahu pelayan OpenSSH untuk mengkonfigurasi semula dirinya sendiri:
sudo dpkg-reconfigure openssh-server
Anda akan dapat melihat dengan pantas semasa komputer anda membuat kunci baharu. Ta-da!
Sekarang bahawa anda tahu bagaimana SSH berfungsi sedikit lebih baik, anda sepatutnya dapat keluar dari tempat yang sukar. Amaran / Kesilapan Pengenalpastian Asas Jauh Telah Berubah "adalah sesuatu yang melemparkan banyak pengguna, bahkan orang-orang yang biasa dengan baris perintah.
.