user@server:~$ ssh [email protected]Welcome to server.Last login: 2026-05-26$ █

Shell Selamat (SSH)

11 min bacaRangkaian

SSH ialah protokol yang menjalankan separuh Internet yang tidak kelihatan: setiap konsol jauh pentadbir sistem, setiap langkah penggunaan pembangun, setiap tolakan Git ke repositori peribadi. Ia menggantikan telnet pada akhir 1990-an dan telah menjadi protokol cangkerang selamat lalai sejak itu. Mengetahui apa yang sebenarnya dilakukannya menjadikan banyak operasi berfungsi masuk akal.

Badan artikel penuh disediakan dalam bahasa Inggeris di bawah.

SSH (Secure Shell) ialah protokol rangkaian kriptografi untuk mengendalikan perkhidmatan rangkaian dengan selamat melalui rangkaian tidak terjamin. Paling biasa digunakan untuk log masuk baris arahan jauh ("shell" dalam nama) dan untuk memindahkan fail, tetapi protokol asasnya cukup umum untuk menyalurkan sebarang aplikasi TCP. SSH telah dicipta oleh Tatu Ylönen pada tahun 1995 selepas serangan menghidu kata laluan di universitinya; pelaksanaan OpenSSH (bermula 1999) ialah versi yang paling banyak digunakan hari ini.

Apa yang SSH sediakan

TTiga sifat:

  • Confidentiality — disulitkan dalam transit. Pemerhati rangkaian melihat bait yang disulitkan, bukan perintah atau kata laluan.
  • Integrity — paket yang diubah suai dikesan dan ditolak.
  • Pengesahan kedua-dua hujung — klien mengesahkan, kekunci awam dan pelayan lain, (atau mengesahkan kata laluan kepada pelayan) pelanggan (melalui kunci hos).

Gabungan menggantikan suite lama telnet, rlogin, rsh dan rcp — yang kesemuanya menghantar bukti kelayakan dalam teks biasa.

Cara sambungan SSH berfungsi

PLZPLZ26XJabatan tangan, sim2XXXPL8X8XPLPLX terbuka Sambungan TCP ke pelayan pada port 22 (boleh dikonfigurasikan).

  • Kedua belah pihak bertukar rentetan versi.
  • Kedua belah pihak bertukar algoritma yang disokong; pilih sifir bersama yang paling kuat, KEX, MAC.
  • Pertukaran kunci — biasanya lengkung X25519 atau NIST hari ini. Kedua-dua pihak memperoleh rahsia kongsi tanpa ia melintasi wayar dalam teks biasa.
  • Pelayan menghantar kunci hosnya, ditandatangani dengan rahsia kongsi. Pelanggan menyemak terhadap ~/.ssh/known_hosts.
  • Mulai saat ini, semuanya disulitkan dengan kunci yang diperoleh daripada rahsia kongsi.
  • Pelanggan mengesahkan — melalui kata laluan, kunci awam atau beberapa mekanisme lain.
  • Sesi yang disulitkan dibuka. Pelanggan meminta cangkerang, pemindahan fail, port ke hadapan atau apa sahaja yang dikehendakinya.
  • Kaedah pengesahan

    • Password. Pengguna menaip kata laluan; ia dihantar disulitkan dalam sesi. Mudah, tetapi terdedah kepada serangan pemadat kelayakan terhadap pelayan SSH terdedah.
    • Kunci Awam. Pelanggan mempunyai kunci peribadi (dalam ~/.ssh/id_ed25519 biasanya); pelayan mempunyai kunci awam yang sepadan dalam ~/.ssh/authorized_keys. Pelanggan membuktikan pemilikan kunci persendirian dengan menandatangani cabaran daripada pelayan. Tiada kata laluan melintasi rangkaian. Lalai yang disyorkan untuk hampir semua kes penggunaan.
    • Berasaskan sijil. A CA menandatangani sijil untuk kunci pengguna, termasuk tamat tempoh dan kekangan. Pelayan mempercayai CA, secara automatik mempercayai sijil yang ditandatangani. Model yang tepat untuk organisasi yang mempunyai ramai pengguna; menggantikan mimpi ngeri pengedaran kunci-ssh.
    • FIDO2 / kunci perkakasan SSH. OpenSSH Terkini menyokong kunci yang disokong oleh token keselamatan perkakasan. Kalis pancingan data, memerlukan pemilikan fizikal.
    • Multi-faktor — gabungkan perkara di atas. Kata laluan + kunci atau kata laluan + token perkakasan.

    Melebihi akses shell: pemajuan port

    SSH boleh terowong trafik TCP sewenang-wenangnya melalui sesi yang disulitkan:

    • Lpemajuan port tempatan (8):8 ssh -L 9000:dalaman:3306 pengguna@bastion membuka port tempatan 9000, yang menyalurkan ke internal:3306 melalui hos benteng. Berguna untuk mencapai perkhidmatan dalaman melalui hos lompat.
    • Pemajuan port jauh (-R): arah bertentangan. Hos jauh mendapat port yang menyambung semula ke perkhidmatan pada mesin anda.
    • Pemajuan port dinamik (-D): SSH mencipta proksi SOCKS5 pada mesin tempatan anda. Mana-mana aplikasi yang ditujukan kepadanya mempunyai trafik TCP yang disalurkan melalui sesi SSH. VPN pengguna tunggal secara berkesan melalui SSH.

    SSH pemajuan dinamik ialah satu-satunya VPN orang miskin yang paling berguna; setiap orang yang mempunyai pelayan di suatu tempat mempunyai akses kepadanya.

    Ekosistem OpenSSH

    • ssh — klien
    • sshd — pelayan daemon
    • scp — salinan selamat (warisan, kini kebanyakannya digantikan oleh hud)
    • sftp — FTP selamat, protokol berasingan yang berjalan di dalam SSH
    • ssh-agent — menyahsulit kekunci dalam memori supaya anda tidak memasukkan frasa laluan setiap sambunganXPLXZ21PLZPLZ2Z21PLZ20
    • PLZ20PLZ21ZPLZ2 menjana pasangan kunci
    • ssh-copy-id — menyalin kunci awam anda ke fail kunci_berizin jauh

    Mempertahankan pelayan SSH

    Pelayan SSH di Internet awam sentiasa melihat bukti kelayakan. Pertahanan:

    • Lumpuhkan pengesahan kata laluan. Kunci awam sahaja. Mengalih keluar keseluruhan vektor serangan pemadat kelayakan.
    • Gunakan kekunci Ed25519. Moden, pantas, kecil. ssh-keygen -t ed25519 ialah perintah yang betul untuk kekunci baharu.
    • Gunakan port bukan lalai. Marginal; kebanyakannya mengurangkan bunyi log pengimbas.
    • fail2ban atau sshguard — menyekat IP selepas percubaan gagal berulang.
    • LHadkan akaun pengguna yang boleh SSH. AllowUsers in sshd_config.
    • Gunakan VPN atau Tailscale — jangan dedahkan SSH kepada Internet awam sama sekali jika anda boleh mengelakkannya.
    • Audit hos_ketahuan dan kunci_berkuasa. keluarkan kekunci untuk pengguna keluar; semak entri yang tidak dijangka.

    Soalan lazim

    Apakah port yang digunakan oleh SSH?
    22 secara lalai. Port boleh dikonfigurasikan; sesetengah pengendali mengalihkan SSH ke port bukan standard untuk mengurangkan trafik imbasan dalam log. Ini adalah keselamatan melalui ketidakjelasan — berguna untuk kebersihan, bukan untuk keselamatan sebenar. Keselamatan sebenar ialah pengesahan yang kukuh.
    Adakah SSH lebih selamat daripada HTTPS?
    Model ancaman yang berbeza. Kedua-duanya menggunakan kriptografi moden dan pada asasnya adalah sama selamat di peringkat protokol. SSH biasanya digunakan dengan pengesahan kunci awam (tiada kata laluan, sangat kuat) manakala banyak tapak HTTPS masih menggunakan pengesahan kata laluan (lebih lemah secara lalai). Protokol adalah rakan sebaya; amalan penempatan berbeza-beza.
    Bolehkah saya menggunakan SSH untuk pemindahan fail?
    ya. <code>scp</code> dan <code>sftp</code> kedua-duanya dijalankan di atas SSH. SFTP ialah pilihan moden yang lebih berkebolehan — pemindahan boleh disambung semula, operasi rekursif, penulisan atom. <code>rsync</code> juga boleh menggunakan SSH sebagai pengangkutannya, dan merupakan alat yang sesuai untuk sebarang pemindahan bukan remeh.
    Apakah kunci SSH?
    Pasangan kunci awam/peribadi yang digunakan untuk pengesahan. Kunci persendirian hidup dalam <code>~/.ssh/id_*</code> pada mesin anda; kunci awam dipasang dalam <code>~/.ssh/authorized_keys</code> pada pelayan yang anda sambungkan. Kehilangan kunci persendirian tanpa frasa laluan adalah masalah yang serius — sesiapa sahaja yang memilikinya boleh log masuk sebagai anda. Sentiasa lindungi kunci SSH dengan frasa laluan.
    Mengapa SSH mengatakan 'kunci hos berubah'?
    Kunci identiti pelayan berubah sejak sambungan terakhir anda — sama ada pelayan telah dibina semula, kunci telah diputar atau ada sesuatu yang tidak kena (kes yang paling membimbangkan: seseorang menyamar sebagai pelayan). Jangan terima kunci baru secara membuta tuli; sahkan di luar jalur dengan pengendali pelayan. Jika ia adalah putaran yang sah, alih keluar kunci lama daripada known_hosts dan terima yang baharu.
    SSH Menjelaskan: Bagaimana Secure Shell Menggantikan Telnet dan Apa yang Ada di Dalam Setiap Sesi SSH