Trik yang menarik dan trik SSH

Beberapa tips menggunakan SSH secara efisien. Mari kita bicara tentang caranya:

  • Gunakan otentikasi dua faktor untuk koneksi SSH
  • aman untuk menggunakan "penerusan kunci" (penerusan agen);
  • keluar dari sesi SSH yang digantung;
  • biarkan terminal terbuka ketika Anda keluar atau lepaskan;
  • Bagikan terminal jarak jauh dengan teman (tanpa Zoom!).

gambar

Otentikasi multi faktor SSH


Ada lima cara untuk menambahkan faktor kedua untuk otentikasi di SSH:

  1. OpenSSH ( ).

    2020 OpenSSH FIDO U2F (Universal Second Factor). , .

    , 8.2 . ssh -V, nc [servername] 22.

    โ€” ecdsa-sk ed25519-sk ( ). $ ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_sk. , U2F . U2F , .

    . OpenSSH -sk-ยซยป . U2F . , . $ ssh-keygen -t ecdsa-sk -O resident -f ~/.ssh/id_ecdsa_sk. , $ ssh-add -K. .
  2. PIV+PKCS11 Yubikey. , SSH-, . Yubikey U2F+SSH with PIV/PKCS11. , FIDO U2F. , .
  3. ssh- yubikey-agent. Filippo Valsorda SSH- Yubikeys. .
  4. Touch ID sekey. Sekey โ€” SSH- , secure enclave MacOS Touch ID.
  5. Single Sign On SSH. . Single Sign On SSH , , .


(agent forwarding)


Meneruskan kunci dalam SSH memberikan akses host jarak jauh ke agen SSH lokal Anda. Ketika klien SSH Anda menggunakan penerusan kunci (biasanya diaktifkan oleh opsi ssh -A), ada 2 saluran dalam koneksi - sesi interaktif Anda dan saluran penerusan kunci. Agen SSH lokal membuat soket IPC yang menghubungkan ke host jarak jauh melalui saluran ini. Ini berbahaya karena Seorang pengguna dengan hak akses root pada host jarak jauh memiliki akses ke agen SSH lokal Anda dan berpotensi menggunakannya untuk mengakses sumber daya jaringan atas nama Anda. Dengan agen SSH standar yang dikirimkan bersama OpenSSH, Anda tidak pernah tahu apa yang terjadi. Tetapi jika Anda menggunakan kunci U2F (atau Sekey ), Anda dapat menghentikan segala upaya untuk menggunakan agen SSH Anda.

Bahkan dengan batasan ini, penggunaan forwarding kunci secara berkala dapat diterima. Jangan gunakan metode ini untuk semua koneksi Anda. Gunakan hanya jika Anda yakin akan kebutuhannya dalam situasi tertentu.

Keluar dari Sesi Hanging SSH


Sesi SSH sering membeku karena pemadaman jaringan, kehilangan kontrol oleh program yang dapat dieksekusi atau salah satu urutan kontrol terminal yang memblokir input keyboard.

Berikut adalah beberapa cara untuk keluar dari sesi yang macet:

  1. Keluar otomatis ketika jaringan rusak. Dalam konfigurasi SSH .ssh/configAnda , Anda perlu menambahkan: itu akan memeriksa koneksi dengan mengirim permintaan gema ke host jarak jauh setiap detik. Jika lebih dari permintaan tersebut tidak dijawab, maka SSH akan menutup koneksi.

    ServerAliveInterval 5
    ServerAliveCountMax 1


    sshServerAliveIntervalServerAliveCountMax
  2. . ssh ~ . ~. ( ).

    ~? , . , ~ , .

?Ketika Internet ditemukan, komputer tidak terlalu mobile. Saat Anda menggunakan laptop dan beralih di antara jaringan WiFi IPv4, alamat IP Anda akan berubah. Karena SSH didasarkan pada koneksi TCP, dan koneksi TCP tergantung pada titik koneksi dengan alamat IP tetap, setiap kali Anda terhubung ke jaringan lain, koneksi SSH Anda terputus. Ketika alamat IP Anda berubah, diperlukan beberapa saat sebelum tumpukan jaringan mendeteksi bahwa koneksi terputus. Koneksi TCP tidak menyiratkan shutdown cepat dari salah satu pihak jika terjadi masalah jaringan, sehingga akan mencoba untuk mencoba mengirim ulang data untuk beberapa waktu lagi. Di terminal Anda, sesi akan terlihat macet. IPv6 menambahkan fungsionalitas yang memungkinkan perangkat mempertahankan alamat IP mereka ketika berpindah antar jaringan.Jadi suatu hari nanti ini akan berhenti menjadi masalah.

Cara membiarkan terminal terbuka pada host jarak jauh


Ada dua opsi untuk menyimpan sesi ketika Anda berpindah antar jaringan atau ingin memutuskan koneksi untuk sementara waktu:

  1. Gunakan Mosh atau Terminal Abadi . Jika Anda benar-benar membutuhkan koneksi yang tidak macet , meskipun Anda berpindah antar jaringan, gunakan Mosh-mobile shell. Mosh adalah shell aman yang menggunakan SSH untuk menginisialisasi sesi (jabat tangan), setelah itu beralih ke saluran terenkripsi sendiri. Saluran ini sangat stabil. Ini dapat menangani berbagai situasi, termasuk pemutusan dari Internet, mengubah alamat IP laptop Anda, penundaan besar saat transmisi melalui jaringan, dan lain-lain. Berkat keajaiban UDP dan protokol sinkronisasi yang digunakan oleh Mosh.

    Mosh , 60000โ€“61000 UDP . mosh user@server .

    Mosh , SSH, - . , . SSH , , Mosh .
  2. tmux. , , tmux. SSH- , tmux attach, tmux. โ€” , macOS .

    tmux Byobu โ€” , . Byobu Ubuntu macOS Homebrew.



Ketika Anda memecahkan masalah yang rumit dengan server, saya ingin berbagi sesi SSH dengan orang lain yang ada di tempat lain. tmux adalah alat terminal berbagi terbaik.
Jadi, Anda perlu melakukan hal berikut:

  1. Pastikan itu tmuxdiinstal pada server Anda di DMZ (atau di mana Anda ingin terhubung).
  2. Anda berdua harus terhubung ke server melalui SSH menggunakan akun yang sama .
  3. Salah satu dari Anda harus berlari tmuxuntuk membuat tmuxsesi.
  4. Yang lain harus menjalankan perintah tmux attach.
  5. Voila! Anda telah berbagi terminal.

Jika Anda membutuhkan lebih banyak penyesuaian sesi multi-pengguna, gunakan tmate, garpu ini tmux, yang memungkinkan Anda untuk membuat sesi bersama lebih mudah.

Diterjemahkan oleh Andrey Zinchenko, Kepala Departemen Analisis Rexoft

All Articles