Contoh praktikal SSH, yang akan membawa kemahiran anda sebagai pentadbir sistem jauh ke tahap yang baharu. Perintah dan petua akan membantu bukan sahaja untuk digunakan SSH, tetapi juga menavigasi rangkaian dengan lebih cekap.
Mengetahui beberapa helah ssh berguna kepada mana-mana pentadbir sistem, jurutera rangkaian atau pakar keselamatan.
Contoh berikut menggunakan parameter biasa yang sering ditemui semasa menyambung ke pelayan jauh SSH.
localhost:~$ ssh -v -p 22 -C neo@remoteserver
-v: Output penyahpepijatan amat berguna apabila menganalisis masalah pengesahan. Boleh digunakan beberapa kali untuk memaparkan maklumat tambahan.
- p 22: port sambungan ke pelayan SSH jauh. 22 tidak perlu ditentukan, kerana ini adalah nilai lalai, tetapi jika protokol berada pada beberapa port lain, maka kami menentukannya menggunakan parameter -p. Port pendengaran ditentukan dalam fail sshd_config dalam format Port 2222.
-C: Mampatan untuk sambungan. Jika anda mempunyai sambungan yang perlahan atau melihat banyak teks, ini boleh mempercepatkan sambungan.
neo@: Baris sebelum simbol @ menunjukkan nama pengguna untuk pengesahan pada pelayan jauh. Jika anda tidak menyatakannya, ia akan lalai kepada nama pengguna akaun yang sedang anda log masuk (~$whoami). Pengguna juga boleh ditentukan menggunakan parameter -l.
remoteserver: nama hos untuk disambungkan ssh, ini boleh menjadi nama domain yang layak sepenuhnya, alamat IP atau mana-mana hos dalam fail hos tempatan. Untuk menyambung kepada hos yang menyokong IPv4 dan IPv6, anda boleh menambah parameter pada baris arahan -4 atau -6 untuk resolusi yang betul.
Semua parameter di atas adalah pilihan kecuali remoteserver.
Menggunakan fail konfigurasi
Walaupun ramai yang biasa dengan fail tersebut sshd_config, terdapat juga fail konfigurasi klien untuk arahan itu ssh. Nilai asal ~/.ssh/config, tetapi ia boleh ditakrifkan sebagai parameter untuk pilihan -F.
Host *
Port 2222
Host remoteserver
HostName remoteserver.thematrix.io
User neo
Port 2112
IdentityFile /home/test/.ssh/remoteserver.private_key
Terdapat dua entri hos dalam contoh fail konfigurasi ssh di atas. Yang pertama bermaksud semua hos, semuanya menggunakan parameter konfigurasi Port 2222. Yang kedua mengatakan bahawa untuk hos pelayan jauh nama pengguna, port, FQDN dan IdentityFile yang berbeza harus digunakan.
Fail konfigurasi boleh menjimatkan banyak masa menaip dengan membenarkan konfigurasi lanjutan digunakan secara automatik apabila menyambung ke hos tertentu.
Menyalin fail melalui SSH menggunakan SCP
Pelanggan SSH dilengkapi dengan dua alat lain yang sangat berguna untuk menyalin fail sambungan ssh yang disulitkan. Lihat di bawah untuk contoh penggunaan standard arahan scp dan sftp. Ambil perhatian bahawa banyak pilihan ssh digunakan untuk arahan ini juga.
Dalam contoh ini fail mypic.png disalin ke pelayan jauh ke folder /media/data dan dinamakan semula kepada mypic_2.png.
Jangan lupa tentang perbezaan dalam parameter port. Di sinilah ramai orang terperangkap apabila mereka melancarkan scp daripada baris arahan. Inilah parameter port -PDan tidak -p, sama seperti dalam klien ssh! Anda akan lupa, tetapi jangan risau, semua orang lupa.
Bagi mereka yang biasa dengan konsol ftp, banyak arahan serupa dalam sftp... Anda boleh lakukan menolak, meletakkan ΠΈ lsseperti yang diingini oleh hati.
sftp neo@remoteserver
Contoh praktikal
Dalam kebanyakan contoh ini, keputusan boleh dicapai menggunakan kaedah yang berbeza. Seperti dalam semua kami buku teks dan contoh, keutamaan diberikan kepada contoh praktikal yang hanya menjalankan tugas mereka.
1. Proksi stokin SSH
Ciri Proksi SSH adalah nombor 1 untuk alasan yang baik. Ia lebih berkuasa daripada yang diketahui ramai dan memberi anda akses kepada mana-mana sistem yang boleh diakses oleh pelayan jauh, menggunakan hampir mana-mana aplikasi. Pelanggan ssh boleh menyalurkan trafik melalui proksi SOCKS dengan satu arahan mudah. Adalah penting untuk memahami bahawa trafik ke sistem jauh akan datang dari pelayan jauh, ini akan ditunjukkan dalam log pelayan web.
Di sini kami menjalankan proksi stokin pada port TCP 8888, arahan kedua menyemak bahawa port aktif dalam mod mendengar. 127.0.0.1 menunjukkan bahawa perkhidmatan hanya berjalan pada localhost. Kami boleh menggunakan arahan yang sedikit berbeza untuk mendengar pada semua antara muka, termasuk ethernet atau wifi, ini akan membenarkan aplikasi lain (penyemak imbas, dll.) pada rangkaian kami untuk menyambung ke perkhidmatan proksi melalui proksi stokin ssh.
Sekarang kita boleh mengkonfigurasi penyemak imbas untuk menyambung ke proksi stokin. Dalam Firefox, pilih Tetapan | Asas | Tetapan rangkaian. Tentukan alamat IP dan port untuk disambungkan.
Sila ambil perhatian pilihan di bahagian bawah borang untuk meminta permintaan DNS penyemak imbas anda juga melalui proksi SOCKS. Jika anda menggunakan pelayan proksi untuk menyulitkan trafik web pada rangkaian tempatan anda, anda mungkin mahu memilih pilihan ini supaya permintaan DNS disalurkan melalui sambungan SSH.
Mengaktifkan proksi stokin dalam Chrome
Melancarkan Chrome dengan parameter baris arahan tertentu akan mendayakan proksi stokin, serta menyelaraskan permintaan DNS daripada penyemak imbas. Percaya tetapi semak. guna tcpdump untuk menyemak bahawa pertanyaan DNS tidak lagi kelihatan.
Perlu diingat bahawa banyak aplikasi lain juga mungkin menggunakan proksi stokin. Penyemak imbas web adalah yang paling popular dari semuanya. Sesetengah aplikasi mempunyai pilihan konfigurasi untuk mendayakan pelayan proksi. Yang lain memerlukan sedikit bantuan dengan program pembantu. Sebagai contoh, rantaian proksi membolehkan anda menjalankan proksi stoking Microsoft RDP, dsb.
Parameter konfigurasi proksi stoking ditetapkan dalam fail konfigurasi rantai proksi.
Petunjuk: jika anda menggunakan desktop jauh dari Linux pada Windows? Cuba klien FreeRDP. Ini adalah pelaksanaan yang lebih moden daripada rdesktop, dengan pengalaman yang lebih lancar.
Pilihan untuk menggunakan SSH melalui proksi stokin
Anda sedang duduk di kafe atau hotel - dan terpaksa menggunakan WiFi yang agak tidak boleh dipercayai. Kami melancarkan proksi ssh secara tempatan daripada komputer riba dan memasang terowong ssh ke dalam rangkaian rumah pada Rasberry Pi tempatan. Menggunakan penyemak imbas atau aplikasi lain yang dikonfigurasikan untuk proksi stokin, kami boleh mengakses sebarang perkhidmatan rangkaian pada rangkaian rumah kami atau mengakses Internet melalui sambungan rumah kami. Segala-galanya antara komputer riba dan pelayan rumah anda (melalui Wi-Fi dan internet ke rumah anda) disulitkan dalam terowong SSH.
2. Terowong SSH (port forwarding)
Dalam bentuk yang paling mudah, terowong SSH hanya membuka port pada sistem tempatan anda yang bersambung ke port lain di hujung terowong yang lain.
Mari lihat parameter -L. Ia boleh dianggap sebagai bahagian mendengar tempatan. Jadi dalam contoh di atas, port 9999 sedang mendengar di sebelah localhost dan dimajukan melalui port 80 ke pelayan jauh. Sila ambil perhatian bahawa 127.0.0.1 merujuk kepada localhost pada pelayan jauh!
Jom naik tangga. Contoh berikut menyampaikan port pendengaran dengan hos lain pada rangkaian tempatan.
Dalam contoh ini, kami mengubah hala terowong dari pelayan jauh ke pelayan web yang berjalan pada 10.10.10.10. Trafik dari pelayan jauh ke 10.10.10.10 tiada lagi dalam terowong SSH. Pelayan web pada 10.10.10.10 akan menganggap pelayan jauh sebagai sumber permintaan web.
4. Terowong SSH terbalik
Di sini kami akan mengkonfigurasi port mendengar pada pelayan jauh yang akan menyambung kembali ke port tempatan pada localhost kami (atau sistem lain).
Sesi SSH ini mewujudkan sambungan dari port 1999 pada pelayan jauh ke port 902 pada pelanggan tempatan kami.
5. Proksi Songsang SSH
Dalam kes ini, kami menyediakan proksi stokin pada sambungan ssh kami, tetapi proksi sedang mendengar pada hujung jauh pelayan. Sambungan kepada proksi jauh ini kini muncul dari terowong sebagai trafik daripada localhost kami.
Jika anda menghadapi masalah dengan pilihan SSH jauh berfungsi, semak dengan netstat, apakah antara muka lain yang disambungkan ke port pendengaran. Walaupun kami menunjukkan 0.0.0.0 dalam contoh, tetapi jika nilai GatewayPorts Π² sshd_config ditetapkan untuk tidak, maka pendengar akan terikat hanya kepada localhost (127.0.0.1).
Amaran keselamatan
Sila ambil perhatian bahawa dengan membuka proksi terowong dan stokin, sumber rangkaian dalaman mungkin boleh diakses oleh rangkaian yang tidak dipercayai (seperti Internet!). Ini boleh menjadi risiko keselamatan yang serius, jadi pastikan anda memahami maksud pendengar dan apa yang mereka boleh akses.
6. Memasang VPN melalui SSH
Istilah biasa di kalangan pakar dalam kaedah serangan (pentesters, dll.) ialah "tumpu dalam rangkaian." Sebaik sahaja sambungan diwujudkan pada satu sistem, sistem itu menjadi pintu masuk untuk akses selanjutnya ke rangkaian. Titik tumpu yang membolehkan anda bergerak secara meluas.
Untuk kedudukan sedemikian, kita boleh menggunakan proksi SSH dan rantaian proksi, namun terdapat beberapa batasan. Sebagai contoh, ia tidak akan dapat berfungsi secara langsung dengan soket, jadi kami tidak akan dapat mengimbas port dalam rangkaian melalui NmapSYN.
Menggunakan pilihan VPN yang lebih maju ini, sambungan dikurangkan kepada tingkatan 3. Kami kemudiannya boleh mengarahkan trafik melalui terowong menggunakan penghalaan rangkaian standard.
Kaedah menggunakan ssh, iptables, tun interfaces dan penghalaan.
Mula-mula anda perlu menetapkan parameter ini sshd_config. Memandangkan kami membuat perubahan pada antara muka kedua-dua sistem jauh dan pelanggan, kami memerlukan hak akar di kedua-dua belah pihak.
PermitRootLogin yes
PermitTunnel yes
Kemudian kami akan mewujudkan sambungan ssh menggunakan parameter yang meminta permulaan peranti tun.
localhost:~# ssh -v -w any root@remoteserver
Kita kini sepatutnya mempunyai peranti tun apabila menunjukkan antara muka (# ip a). Langkah seterusnya akan menambah alamat IP pada antara muka terowong.
Bahagian pelanggan SSH:
localhost:~# ip addr add 10.10.10.2/32 peer 10.10.10.10 dev tun0
localhost:~# ip tun0 up
Bahagian Pelayan SSH:
remoteserver:~# ip addr add 10.10.10.10/32 peer 10.10.10.2 dev tun0
remoteserver:~# ip tun0 up
Sekarang kita mempunyai laluan terus ke hos lain (route -n ΠΈ ping 10.10.10.10).
Anda boleh mengarahkan mana-mana subnet melalui hos di sisi lain.
localhost:~# route add -net 10.10.10.0 netmask 255.255.255.0 dev tun0
Di bahagian jauh anda mesti mendayakan ip_forward ΠΈ iptables.
Boom! VPN melalui terowong SSH pada lapisan rangkaian 3. Sekarang itulah kemenangan.
Jika berlaku sebarang masalah, gunakan tcpdump ΠΈ pinguntuk menentukan punca. Oleh kerana kami bermain di lapisan 3, paket icmp kami akan melalui terowong ini.
7. Salin kekunci SSH (ssh-copy-id)
Terdapat beberapa cara untuk melakukan ini, tetapi arahan ini menjimatkan masa dengan tidak menyalin fail secara manual. Ia hanya menyalin ~/.ssh/id_rsa.pub (atau kekunci lalai) daripada sistem anda ke ~/.ssh/authorized_keys pada pelayan jauh.
localhost:~$ ssh-copy-id user@remoteserver
8. Pelaksanaan arahan jauh (bukan interaktif)
pasukan ssh Boleh dipautkan kepada arahan lain untuk antara muka yang sama dan mesra pengguna. Cuma tambahkan arahan yang anda mahu jalankan pada hos jauh sebagai parameter terakhir dalam petikan.
Dalam contoh ini grep dilaksanakan pada sistem tempatan selepas log telah dimuat turun melalui saluran ssh. Jika fail itu besar, ia lebih mudah untuk dijalankan grep di bahagian jauh dengan hanya melampirkan kedua-dua arahan dalam petikan berganda.
Contoh lain menjalankan fungsi yang sama seperti ssh-copy-id daripada contoh 7.
9. Tangkapan dan tontonan paket jauh dalam Wireshark
Saya mengambil salah satu daripada kami contoh tcpdump. Gunakannya untuk menangkap paket dari jauh dan memaparkan hasilnya terus dalam GUI Wireshark tempatan.
:~$ ssh root@remoteserver 'tcpdump -c 1000 -nn -w - not port 22' | wireshark -k -i -
10. Menyalin folder tempatan ke pelayan jauh melalui SSH
Helah bagus yang memampatkan folder menggunakan bzip2 (ini ialah pilihan -j dalam arahan tar), dan kemudian mendapatkan semula strim bzip2 di sisi lain, mencipta folder pendua pada pelayan jauh.
Jika X dipasang pada klien dan pelayan jauh, maka anda boleh melaksanakan perintah GUI dari jauh dengan tetingkap pada desktop tempatan anda. Ciri ini telah wujud sejak sekian lama, tetapi masih sangat berguna. Lancarkan pelayar web jauh atau pun konsol VMWawre Workstation seperti yang saya lakukan dalam contoh ini.
localhost:~$ ssh -X remoteserver vmware
Rentetan yang diperlukan X11Forwarding yes dalam fail sshd_config.
12. Penyalinan fail jauh menggunakan rsync dan SSH
rsync jauh lebih selesa scp, jika anda memerlukan sandaran berkala bagi direktori, sejumlah besar fail atau fail yang sangat besar. Terdapat fungsi untuk memulihkan daripada kegagalan pemindahan dan menyalin hanya fail yang diubah, yang menjimatkan trafik dan masa.
Contoh ini menggunakan pemampatan gzip (-z) dan mod pengarkiban (-a), yang membolehkan penyalinan rekursif.
Torsocks akan menggunakan port 9050 pada localhost untuk proksi. Seperti biasa, apabila menggunakan Tor anda perlu menyemak dengan serius trafik yang sedang disalurkan dan isu keselamatan operasi (opsec) yang lain. Ke manakah perginya pertanyaan DNS anda?
14. Contoh SSH kepada EC2
Untuk menyambung ke tika EC2, anda memerlukan kunci peribadi. Muat turunnya (sambungan .pem) daripada panel kawalan Amazon EC2 dan tukar kebenaran (chmod 400 my-ec2-ssh-key.pem). Simpan kunci di tempat yang selamat atau letakkan dalam folder anda sendiri ~/.ssh/.
Parameter -i hanya memberitahu pelanggan ssh untuk menggunakan kunci ini. Fail ~/.ssh/config Ideal untuk mengkonfigurasi penggunaan kunci secara automatik apabila menyambung ke hos ec2.
Host my-ec2-public
Hostname ec2???.compute-1.amazonaws.com
User ubuntu
IdentityFile ~/.ssh/my-ec2-key.pem
15. Mengedit fail teks menggunakan VIM melalui ssh/scp
Untuk semua kekasih vim Petua ini akan menjimatkan sedikit masa. Dengan menggunakan vim fail disunting melalui scp dengan satu arahan. Kaedah ini hanya mencipta fail secara setempat dalam /tmpdan kemudian menyalinnya semula setelah kami menyimpannya vim.
localhost:~$ vim scp://user@remoteserver//etc/hosts
Nota: formatnya berbeza sedikit daripada biasa scp. Selepas tuan rumah kita mempunyai dua kali ganda //. Ini adalah rujukan laluan mutlak. Satu garis miring akan menunjukkan laluan yang berkaitan dengan folder rumah anda users.
Jika anda melihat ralat ini, semak semula format arahan. Ini biasanya bermaksud ralat sintaks.
16. Memasang SSH jauh sebagai folder tempatan dengan SSHFS
Dengan cara sshfs - klien sistem fail ssh - kami boleh menyambungkan direktori tempatan ke lokasi terpencil dengan semua interaksi fail dalam sesi yang disulitkan ssh.
localhost:~$ apt install sshfs
Pasang pakej pada Ubuntu dan Debian sshfs, dan kemudian hanya lekapkan lokasi terpencil pada sistem kami.
Secara lalai, jika terdapat sambungan sedia ada ke pelayan jauh menggunakan ssh sambungan kedua menggunakan ssh atau scp mewujudkan sesi baharu dengan pengesahan tambahan. Pilihan ControlPath membenarkan sesi sedia ada digunakan untuk semua sambungan seterusnya. Ini akan mempercepatkan proses dengan ketara: kesannya dapat dilihat walaupun pada rangkaian tempatan, dan lebih-lebih lagi apabila menyambung ke sumber jauh.
Host remoteserver
HostName remoteserver.example.org
ControlMaster auto
ControlPath ~/.ssh/control/%r@%h:%p
ControlPersist 10m
ControlPath menentukan soket untuk menyemak sambungan baharu untuk melihat sama ada terdapat sesi aktif ssh. Pilihan terakhir bermakna walaupun selepas anda keluar dari konsol, sesi sedia ada akan kekal terbuka selama 10 minit, jadi pada masa ini anda boleh menyambung semula pada soket sedia ada. Untuk maklumat lanjut, lihat bantuan. ssh_config man.
18. Strim video melalui SSH menggunakan VLC dan SFTP
Malah pengguna lama ssh ΠΈ vlc (Video Lan Klien) tidak sentiasa menyedari pilihan mudah ini apabila anda benar-benar perlu menonton video melalui rangkaian. Dalam tetapan Fail | Buka Strim Rangkaian program vlc anda boleh memasukkan lokasi sebagai sftp://. Jika kata laluan diperlukan, gesaan akan muncul.
sftp://remoteserver//media/uploads/myvideo.mkv
19. Pengesahan dua faktor
Pengesahan dua faktor yang sama seperti akaun bank atau akaun Google anda digunakan pada perkhidmatan SSH.
Sudah tentu, ssh pada mulanya mempunyai fungsi pengesahan dua faktor, yang bermaksud kata laluan dan kunci SSH. Kelebihan token perkakasan atau apl Google Authenticator ialah ia biasanya peranti fizikal yang berbeza.
Jika pembahagian rangkaian bermakna anda perlu melompat melalui berbilang hos ssh untuk sampai ke rangkaian destinasi akhir, pintasan -J akan menjimatkan masa anda.
Perkara utama yang perlu difahami di sini ialah ini tidak sama dengan arahan ssh host1kemudian user@host1:~$ ssh host2 dsb. Pilihan -J bijak menggunakan pemajuan untuk memaksa localhost membuat sesi dengan hos seterusnya dalam rantaian. Jadi dalam contoh di atas, localhost kami disahkan kepada hos4. Iaitu, kunci localhost kami digunakan, dan sesi dari localhost ke hos4 disulitkan sepenuhnya.
Untuk kemungkinan sedemikian dalam ssh_config tentukan pilihan konfigurasi ProxyJump. Jika anda kerap perlu melalui beberapa hos, maka automasi melalui konfigurasi akan menjimatkan banyak masa.
21. Sekat percubaan kekerasan SSH menggunakan iptables
Sesiapa sahaja yang telah menguruskan perkhidmatan SSH dan melihat log tahu tentang bilangan percubaan kekerasan yang berlaku setiap jam setiap hari. Cara cepat untuk mengurangkan bunyi dalam log adalah dengan memindahkan SSH ke port bukan standard. Buat perubahan pada fail sshd_config melalui parameter konfigurasi Pelabuhan##.
Dengan iptables Anda juga boleh menyekat percubaan untuk menyambung ke port dengan mudah apabila mencapai ambang tertentu. Cara mudah untuk melakukan ini adalah dengan menggunakan OSSEC, kerana ia bukan sahaja menyekat SSH, tetapi melakukan sekumpulan langkah pengesanan pencerobohan berasaskan nama hos (HIDS) lain.
22. SSH Escape untuk menukar penghantaran port
Dan contoh terakhir kami ssh direka untuk menukar pemajuan port dengan cepat dalam sesi sedia ada ssh. Bayangkan senario ini. Anda berada jauh dalam rangkaian; mungkin melompat lebih daripada setengah dozen hos dan memerlukan port tempatan pada stesen kerja yang dimajukan ke Microsoft SMB sistem Windows 2003 lama (sesiapa ingat ms08-67?).
Mengklik enter, cuba masukkan dalam konsol ~C. Ini ialah urutan kawalan sesi yang membolehkan perubahan dibuat pada sambungan sedia ada.
Di sini anda boleh melihat bahawa kami telah memajukan port 1445 tempatan kami kepada hos Windows 2003 yang kami temui pada rangkaian dalaman. Sekarang lari sahaja msfconsole, dan anda boleh meneruskan (dengan andaian anda bercadang untuk menggunakan hos ini).
Siap
Contoh, petua dan arahan ini ssh harus memberi titik permulaan; Maklumat lanjut tentang setiap arahan dan keupayaan tersedia di halaman manual (man ssh, man ssh_config, man sshd_config).
Saya sentiasa terpesona dengan keupayaan untuk mengakses sistem dan melaksanakan arahan di mana-mana sahaja di dunia. Dengan mengembangkan kemahiran anda dengan alatan seperti ssh anda akan menjadi lebih berkesan dalam mana-mana permainan yang anda mainkan.