Perintah Linux / Unix: sshd

Nama

sshd - daemon SSSS OpenSSH

Sinopsis

[- h config_file ] [- g login_grace_time ] [- h host_key_file ] [- k key_gen_time ] [- o pilihan ] [- p port ] [- u len ]

Penerangan

sshd (SSH Daemon) adalah program daemon untuk ssh (1). Bersama-sama program ini menggantikan rlogin dan rsh , dan menyediakan komunikasi yang disulitkan selamat antara dua tuan rumah yang tidak dipercayai berbanding rangkaian yang tidak selamat. Program-program ini bertujuan untuk memudahkan pemasangan dan penggunaan yang mungkin.

sshd adalah daemon yang mendengar sambungan dari pelanggan. Ia biasanya bermula pada boot dari / etc / rc Ia meminta daemon baru untuk setiap sambungan masuk. Para daem yang bercabang mengendalikan pertukaran kunci, enkripsi, pengesahan, pelaksanaan perintah, dan pertukaran data. Pelaksanaan sshd ini menyokong kedua-dua protokol SSH versi 1 dan 2 secara serentak.

Protokol SSH Versi 1

Setiap hos mempunyai kunci RSA utama (biasanya 1024 bit) yang digunakan untuk mengenal pasti tuan rumah. Di samping itu, apabila daemon bermula, ia menghasilkan kunci RSA pelayan (biasanya 768 bit). Kekunci ini biasanya diperbaharui setiap jam jika ia telah digunakan, dan tidak pernah disimpan pada cakera.

Apabila klien menghubungkan daemon bertindak balas dengan hos awam dan kunci pelayannya. Pelanggan membandingkan kunci tuan rumah RSA terhadap pangkalan datanya sendiri untuk mengesahkan bahawa ia tidak berubah. Pelanggan kemudian menghasilkan nombor rawak 256-bit. Ia menyulitkan nombor rawak ini menggunakan kedua-dua kekunci tuan rumah dan kekunci pelayan dan menghantar nombor yang disulitkan ke pelayan. Kedua-dua pihak kemudian menggunakan nombor rawak ini sebagai kunci sesi yang digunakan untuk menyulitkan semua komunikasi selanjutnya dalam sesi. Selebihnya sesi disulitkan menggunakan cipher konvensional, saat ini Blowfish atau 3DES, dengan 3DES digunakan secara lalai. Pelanggan memilih algoritma penyulitan untuk digunakan daripada yang ditawarkan oleh pelayan.

Seterusnya, pelayan dan klien memasukkan dialog pengesahan. Pelanggan cuba untuk mengesahkan sendiri menggunakan .rhosts pengesahan, pengesahan host. Digabungkan dengan pengesahan host RSA, pengesahan cabaran-RSA, atau pengesahan kata laluan .

Rhosts pengesahan biasanya dilumpuhkan kerana ia pada asasnya tidak selamat, tetapi boleh diaktifkan dalam fail konfigurasi pelayan jika dikehendaki. Keselamatan sistem tidak diperbaiki kecuali rshd rlogind dan rexecd dilumpuhkan (dengan itu melumpuhkan sepenuhnya rlogin dan rsh ke mesin).

Protokol SSH Versi 2

Versi 2 juga berfungsi: Setiap hos mempunyai kunci spesifik tuan rumah (RSA atau DSA) yang digunakan untuk mengenal pasti tuan rumah. Walau bagaimanapun, apabila daemon bermula, ia tidak menghasilkan kunci pelayan. Keselamatan hadapan disediakan menerusi perjanjian kunci Diffie-Hellman. Perjanjian utama ini menghasilkan kunci sesi bersama.

Selebihnya sesi itu dienkripsi menggunakan cipher simetri, kini 128 bit AES, Blowfish, 3DES, CAST128, Arcfour, 192 bit AES, atau 256 bit AES. Pelanggan memilih algoritma penyulitan untuk digunakan daripada yang ditawarkan oleh pelayan. Di samping itu, integriti sesi disediakan melalui kod pengesahan mesej kriptografi (hmac-sha1 atau hmac-md5).

Versi Protokol 2 menyediakan kaedah pengesahan pengguna asas (PubkeyAuthentication) atau host pelanggan (HostbasedAuthentication), pengesahan kata laluan konvensional, dan kaedah berasaskan cabaran-tindak balas.

Pelaksanaan Perintah dan Pengiriman Data

Jika pelanggan berjaya mengesahkan dirinya sendiri, dialog untuk menyediakan sesi dimasukkan. Pada masa ini pelanggan boleh meminta perkara-perkara seperti memperuntukkan sambungan X11 pseudo-tty, meneruskan sambungan, meneruskan sambungan TCP / IP, atau meneruskan sambungan ejen pengesahan melalui saluran yang selamat.

Akhirnya, pelanggan sama ada meminta shell atau pelaksanaan perintah. Sisi-sisinya kemudian masuk mod sesi. Dalam mod ini, kedua-dua belah pihak boleh menghantar data pada bila-bila masa, dan data tersebut diteruskan ke / dari shell atau perintah di sisi pelayan, dan terminal pengguna di sisi klien.

Apabila program pengguna tamat dan semua dikemukakan X11 dan sambungan lain telah ditutup, pelayan menghantar status exit arahan kepada klien dan kedua-dua belah pihak keluar.

sshd boleh dikonfigurasikan menggunakan pilihan baris arahan atau fail konfigurasi. Pilihan baris perintah mengatasi nilai yang dinyatakan dalam fail konfigurasi.

sshd mengulangi fail konfigurasinya apabila ia menerima isyarat hangup, SIGHUP dengan melaksanakannya dengan namanya dimulakan seperti, / usr / sbin / sshd

Pilihannya adalah seperti berikut:

-b bit

Menentukan bilangan bit dalam kunci pelayan versi 1 protokol ephemeral (default 768).

-d

Mod debug. Pelayan menghantar output debug verbose ke log sistem dan tidak meletakkan dirinya di latar belakang. Pelayan juga tidak akan berfungsi dan hanya akan memproses satu sambungan. Pilihan ini hanya bertujuan untuk debugging untuk pelayan. Pilihan pelbagai -d meningkatkan tahap penyahpepijatan. Maksimum ialah 3.

-e

Apabila pilihan ini ditentukan, sshd akan menghantar output kepada ralat standard dan bukan log sistem.

-f configuration_file

Menentukan nama fail konfigurasi. Lalai adalah / etc / ssh / sshd_config sshd enggan memulakan jika tiada fail konfigurasi.

-g login_grace_time

Memberi masa tanggapan untuk pelanggan mengesahkan diri mereka (lalai 120 saat). Jika pelanggan gagal mengesahkan pengguna dalam beberapa saat ini, pelayan memutuskan sambungan, dan keluar. Nilai sifar menunjukkan tiada had.

-h host_key_file

Menentukan fail dari mana kunci hos dibaca. Pilihan ini mesti diberikan jika sshd tidak dijalankan sebagai root (kerana fail utama host biasa biasanya tidak boleh dibaca oleh sesiapa sahaja tetapi root). Default adalah / etc / ssh / ssh_host_key untuk versi protokol 1, dan / etc / ssh / ssh_host_rsa_key dan / etc / ssh / ssh_host_dsa_key untuk versi protokol 2. Adalah mungkin untuk mempunyai beberapa fail utama host untuk versi protokol yang berbeza dan kunci tuan rumah algoritma.

-i

Menentukan bahawa sshd sedang dijalankan dari inetd. sshd biasanya tidak berjalan dari inetd kerana ia perlu menjana kunci pelayan sebelum ia dapat bertindak balas terhadap klien, dan ini mungkin mengambil puluhan detik. Pelanggan perlu menunggu terlalu lama sekiranya kunci itu diperbaharui setiap kali. Walau bagaimanapun, dengan saiz kunci kecil (contohnya, 512) menggunakan sshd dari inetd mungkin dilaksanakan.

-k key_gen_time

Menentukan kekerapan kunci pelayan versi 1 protokol ephemeral diperbaharui (lalai 3600 saat, atau satu jam). Motivasi untuk menanam semula kekunci yang agak kerap ialah kunci tidak disimpan di mana-mana sahaja, dan selepas kira-kira sejam, menjadi mustahil untuk memulihkan kunci untuk mendekripsi komunikasi yang dicegat walaupun mesin itu retak atau dirampas secara fizikal. Nilai sifar menunjukkan bahawa kekunci itu tidak akan dapat diperbaharui semula.

-o pilihan

Boleh digunakan untuk memberikan pilihan dalam format yang digunakan dalam fail konfigurasi. Ini berguna untuk menentukan pilihan yang mana tidak ada bendera baris perintah yang berasingan.

-p pelabuhan

Menentukan port di mana pelayan mendengar untuk sambungan (lalai 22). Pelbagai pilihan pelabuhan dibenarkan. Pelabuhan yang dinyatakan dalam fail konfigurasi diabaikan apabila port baris perintah ditentukan.

-q

Mod senyap. Tiada apa-apa dihantar ke log sistem. Biasanya permulaan, pengesahan, dan penamatan setiap sambungan dilog masuk.

-t

Mod percubaan. Hanya semak kesahihan fail konfigurasi dan kewarasan kunci. Ini berguna untuk mengemas kini sshd dengan pasti kerana pilihan konfigurasi mungkin berubah.

-u len

Pilihan ini digunakan untuk menentukan saiz medan dalam struktur utmp yang memegang nama hos jauh. Jika nama hos diselesaikan lebih lama daripada len nilai perpuluhan yang bertitik akan digunakan. Ini membolehkan tuan rumah dengan nama tuan rumah yang sangat panjang yang melimpah bidang ini untuk tetap dikenal pasti secara unik. Menentukan - u0 menunjukkan bahawa hanya alamat perpuluhan bertitik harus dimasukkan ke dalam fail utmp. - u0 juga digunakan untuk menghalang sshd daripada membuat permintaan DNS melainkan mekanisma atau konfigurasi pengesahan memerlukannya. Mekanisme pengesahan yang mungkin memerlukan DNS termasuk RhostsAuthentication RhostsRSAAuthentication HostbasedAuthentication dan menggunakan pilihan dari = corak-senarai dalam fail utama. Pilihan konfigurasi yang memerlukan DNS termasuk menggunakan pola USER @ HOST dalam AllowUsers atau DenyUsers

-D

Apabila pilihan ini ditentukan sshd tidak akan melepaskan dan tidak menjadi daemon. Ini memudahkan pemantauan sshd

-4

Angkatan sshd hanya menggunakan alamat IPv4.

-6

Angkatan sshd hanya menggunakan alamat IPv6.

Fail Konfigurasi

sshd membaca data konfigurasi dari / etc / ssh / sshd_config (atau fail yang dinyatakan dengan - f pada baris arahan). Pilihan format fail dan konfigurasi dijelaskan dalam sshd_config5.

Proses Masuk

Apabila pengguna berjaya log masuk, sshd melakukan perkara berikut:

  1. Sekiranya log masuk pada tty, dan tiada arahan yang telah ditentukan, cetak masa login terakhir dan / etc / motd (kecuali jika dicegah dalam fail konfigurasi atau oleh $ HOME / .hushlogin lihat bahagian Sx FILES).
  2. Jika log masuk adalah tty, masa log masuk log masuk.
  3. Cek / etc / nologin jika ada, mencetak kandungan dan berhenti (kecuali root).
  4. Perubahan untuk dijalankan dengan keistimewaan pengguna biasa.
  5. Menetapkan persekitaran asas.
  6. Membaca $ HOME / .ssh / persekitaran jika wujud dan pengguna dibenarkan menukar persekitarannya. Lihat pilihan PermitUserEnvironment dalam sshd_config5.
  7. Perubahan kepada direktori rumah pengguna.
  8. Jika $ HOME / .ssh / rc wujud, jalankannya; lain jika / etc / ssh / sshrc wujud, jalankannya; sebaliknya berjalan xauth. Fail `` rc 'diberikan protokol pengesahan X11 dan kuki dalam input standard.
  9. Menjalankan shell atau arahan pengguna.

Format Fail Authorized_Keys

$ HOME / .ssh / authorized_keys adalah fail lalai yang menyenaraikan kunci awam yang dibenarkan untuk pengesahan RSA dalam protokol versi 1 dan untuk pengesahan utama awam (PubkeyAuthentication) dalam versi protokol 2. AuthorizedKeysFile boleh digunakan untuk menentukan fail alternatif.

Setiap baris fail mengandungi satu kekunci (baris kosong dan baris yang bermula dengan `# 'diabaikan sebagai komen). Setiap kunci awam RSA terdiri daripada medan berikut, dipisahkan oleh ruang: pilihan, bit, eksponen, modulus, ulasan. Setiap protokol versi 2 utama awam terdiri daripada: pilihan, keytype, kunci dikodkan base64, komen. Medan pilihan adalah pilihan; kehadirannya ditentukan oleh sama ada garisan bermula dengan nombor atau tidak (medan pilihan tidak pernah bermula dengan nombor). Bidaan bit, eksponen, modulus dan komen memberi kunci RSA untuk versi protokol 1; medan komen tidak digunakan untuk apa-apa (tetapi mungkin mudah bagi pengguna untuk mengenal pasti kunci). Untuk versi protokol 2, keytype ialah `` ssh-dss '' atau `` ssh-rsa ''

Perhatikan bahawa baris dalam fail ini biasanya beberapa ratus bait panjang (kerana saiz pengekodan utama awam). Anda tidak mahu menaipnya; Sebaliknya, salin ID_dsa.pub identity.pub atau fail id_rsa.pub dan editnya.

sshd menguatkuasakan saiz modulus utama RSA minimum untuk protokol 1 dan protokol 2 kekunci 768 bit.

Opsyen (jika ada) terdiri daripada spesifikasi pilihan yang dipisahkan koma. Tiada ruang dibenarkan, kecuali dalam petikan berganda. Spesifikasi pilihan berikut disokong (perhatikan bahawa kata kunci pilihan adalah kes tidak sensitif):

dari = corak-senarai

Menetapkan bahawa sebagai tambahan kepada pengesahan utama awam, nama kanonis tuan rumah terpencil mestilah hadir dalam senarai corak yang dipisahkan koma (`* 'dan`?' Berfungsi sebagai wildcard). Senarai ini juga mungkin mengandungi corak yang diabaikan oleh prefixing mereka dengan `! ' ; jika nama tuan rumah kanonik sepadan dengan corak yang ditolak, kunci tidak diterima. Tujuan pilihan ini adalah untuk meningkatkan keselamatan: pengesahan utama awam dengan sendirinya tidak mempercayai pelayan rangkaian atau nama atau apa-apa (tetapi kunci); Walau bagaimanapun, jika seseorang entah bagaimana mencuri kunci, kunci membenarkan penceroboh masuk dari mana saja di dunia. Opsyen tambahan ini menggunakan kunci yang dicuri lebih sukar (pelayan nama dan / atau router perlu dikompromi sebagai tambahan kepada kunci sahaja).

command = command

Menentukan bahawa arahan dijalankan apabila kunci ini digunakan untuk pengesahan. Perintah yang dibekalkan oleh pengguna (jika ada) diabaikan. Perintah dijalankan pada pty jika klien meminta pty; jika tidak ia berjalan tanpa tty. Sekiranya saluran bersih 8-bit diperlukan, seseorang tidak boleh meminta pty atau harus menyatakan no-pty Satu petikan boleh dimasukkan ke dalam perintah dengan mengutipnya dengan backslash. Pilihan ini mungkin berguna untuk menyekat kunci awam tertentu untuk melaksanakan operasi tertentu sahaja. Satu contoh mungkin kunci yang membenarkan sandaran jauh tetapi tidak ada yang lain. Perhatikan bahawa pelanggan boleh menentukan penyambungan TCP / IP dan / atau X11 melainkan mereka dilarang secara jelas. Ambil perhatian bahawa opsyen ini terpakai untuk pelaksanaan shell, perintah atau subsistem.

persekitaran = NAME = nilai

Menentukan bahawa rentetan akan ditambah kepada persekitaran semasa log masuk menggunakan kekunci ini. Pembolehubah persekitaran menetapkan cara ini menimpa nilai persekitaran lalai lain. Pelbagai pilihan jenis ini dibenarkan. Pemprosesan alam sekitar dilumpuhkan secara lalai dan dikawal melalui pilihan PermitUserEnvironment . Pilihan ini dimatikan secara automatik jika UseLogin diaktifkan.

no-port-forwarding

Serahan penghantaran TCP / IP apabila kunci ini digunakan untuk pengesahan. Sebarang permintaan pelabuhan ke hadapan oleh klien akan mengembalikan ralat. Ini mungkin digunakan, contohnya, berkaitan dengan pilihan arahan .

no-X11-forwarding

Melarang penghantaran X11 apabila kunci ini digunakan untuk pengesahan. Sebarang permintaan hadapan X11 oleh pelanggan akan mengembalikan ralat.

no-agent-forwarding

Melarang penghantaran ejen pengesahan apabila kunci ini digunakan untuk pengesahan.

no-pty

Mengelakkan peruntukan tty (permintaan untuk memperuntukkan pty akan gagal).

permitopen = host: port

Hadkan penyambungan pelabuhan `` ssh -L ' tempatan supaya ia hanya boleh disambungkan ke hos dan pelabuhan yang ditentukan. Alamat IPv6 boleh ditentukan dengan sintaks alternatif: host / port Pelbagai pilihan permitopen boleh digunakan dipisahkan oleh koma. Tiada padanan corak dilakukan pada nama host yang ditentukan, mereka mestilah domain atau alamat literal.

Contoh

1024 33 12121 ... 312314325 ylo@foo.bar

dari = "*. niksula.hut.fi,! pc.niksula.hut.fi" 1024 35 23 ... 2334 ylo @ niksula

command = "dump / home", no-pty, no-port-forwarding 1024 33 23 ... 2323 backup.hut.fi

permitopen = "10.2.1.55:80", permitopen = "10.2.1.56:25" 1024 33 23 ... 2323

Format Fail Ssh_Known_Hosts

/ Etc / ssh / ssh_known_hosts dan fail $ HOME / .ssh / known_hosts mengandungi kunci awam host untuk semua tuan rumah yang diketahui. Fail global harus disediakan oleh pentadbir (pilihan), dan fail per-pengguna dijaga secara automatik: apabila pengguna menghubungkan dari host yang tidak diketahui, kuncinya akan ditambahkan ke fail per-pengguna.

Setiap baris dalam fail ini mengandungi medan berikut: nama host, bit, eksponen, modulus, ulasan. Medan dipisahkan oleh ruang.

Nama hos adalah senarai corak yang dipisahkan koma ('*' dan '?' Bertindak sebagai wildcard); setiap corak, pada gilirannya, dipadankan dengan nama tuan rumah kanonik (apabila mengesahkan pelanggan) atau terhadap nama yang dibekalkan pengguna (semasa mengesahkan pelayan). Corak juga boleh didahului oleh `! ' untuk menandakan penolakan: jika nama host sepadan dengan corak yang ditolak, ia tidak diterima (dengan baris itu) walaupun ia sepadan dengan corak lain pada baris.

Bit, eksponen, dan modulus diambil secara langsung dari kunci tuan rumah RSA; mereka boleh didapati, contohnya, dari /etc/ssh/ssh_host_key.pub Medan komen pilihan terus ke akhir baris, dan tidak digunakan.

Talian bermula dengan `# 'dan baris kosong diabaikan sebagai komen.

Apabila menjalankan pengesahan tuan rumah, pengesahan diterima jika mana-mana baris padanan mempunyai kunci yang betul. Oleh itu, adalah dibenarkan (tetapi tidak disyorkan) untuk mempunyai beberapa baris atau kekunci tuan rumah yang berbeza untuk nama yang sama. Ini tidak dapat dielakkan apabila nama pendek nama hos dari domain yang berlainan dimasukkan ke dalam fail. Ada kemungkinan bahawa fail mengandungi maklumat yang bercanggah; pengesahan diterima jika maklumat yang sah boleh didapati dari kedua-dua fail.

Perhatikan bahawa garisan dalam fail ini biasanya beratus-ratus aksara panjang, dan anda pasti tidak mahu menaip kekunci tuan rumah dengan tangan. Sebaliknya, buat mereka dengan skrip atau dengan mengambil /etc/ssh/ssh_host_key.pub dan menambah nama host di depan.

Contoh

closenet, ..., 130.233.208.41 1024 37 159 ... 93 closenet.hut.fi cvs.openbsd.org, 199.185.137.3 ssh-rsa AAAA1234 ..... =

Lihat juga

scp (1), sftp (1), ssh (1), ssh-add1, ssh-agent1, ssh-keygen1, login.conf5, moduli (5), sshd_config5, sftp-server8

T. Ylonen T. Kivinen M. Saarinen T. Rinne S. Lehtinen "Senibina Protokol SSH" draft-ietf-secsh-architecture-12.txt Januari 2002 kerja dalam bahan kemajuan

M. Friedl N. Provos WA Simpson "Exchange Group Diffie-Hellman untuk Protokol Lapisan Pengangkutan SSH" draf-ietf-secsh-dh-group-exchange-02.txt Januari 2002 kerja dalam bahan kemajuan

Penting: Gunakan arahan lelaki ( % man ) untuk melihat bagaimana arahan digunakan pada komputer tertentu anda.