Menginstal dan mengkonfigurasi SSH - Ubuntu. Mari kita putuskan penggunanya. Port SSH: apa itu dan mengapa diperlukan?

abstrak: Artikel ini menjelaskan fungsi-fungsi OpenSSH tingkat lanjut yang dapat sangat menyederhanakan kehidupan administrator sistem dan pemrogram yang tidak takut dengan shell. Tidak seperti kebanyakan panduan, yang tidak menjelaskan apa pun selain tombol dan opsi -L/D/R, saya mencoba mengumpulkan semua fitur menarik dan kemudahan yang dibawa ssh.

Peringatan: posting Sangat banyak sekali, tetapi untuk kemudahan penggunaan saya memutuskan untuk tidak memotongnya menjadi beberapa bagian.

Daftar isi:

  • manajemen kunci
  • menyalin file melalui ssh
  • Meneruskan aliran I/O
  • Memasang FS jarak jauh melalui ssh
  • Eksekusi kode jarak jauh
  • Alias ​​dan opsi untuk koneksi di .ssh/config
  • Opsi bawaan
  • Penerusan server X
  • ssh sebagai proxy kaus kaki
  • Penerusan port - maju dan mundur
  • Membalikkan Proksi Sox
  • terowongan lalu lintas L2/L3
  • Penerusan agen otorisasi
  • Tunneling ssh melalui ssh melalui server yang tidak tepercaya ( kemungkinan besar Anda tidak mengetahui hal ini)

Manajemen kunci

Teorinya dalam beberapa kata: ssh bisa login bukan dengan kata sandi, tetapi dengan kunci. Kuncinya terdiri dari bagian terbuka dan tertutup. Yang terbuka ditempatkan di direktori home pengguna yang mengakses server, yang tertutup ditempatkan di direktori home pengguna yang akan menuju server jauh. Bagiannya dibandingkan (saya melebih-lebihkan) dan jika semuanya baik-baik saja, mereka diizinkan masuk. Penting: tidak hanya klien yang diotorisasi di server, tetapi juga server dalam kaitannya dengan klien (yaitu, server memiliki kuncinya sendiri). Fitur utama dari kunci dibandingkan dengan kata sandi adalah bahwa kunci tersebut tidak dapat "dicuri" dengan meretas server - kunci tidak ditransfer dari klien ke server, dan selama otorisasi klien membuktikan kepada server bahwa ia memiliki kunci tersebut (yang sama sihir kriptografi).

Generasi kunci

Anda dapat membuat kunci Anda sendiri menggunakan perintah ssh-keygen. Jika Anda tidak mengatur parameternya, semuanya akan disimpan sebagaimana mestinya.

Kuncinya bisa dikunci dengan kata sandi. Kata sandi ini (dalam GUI normal) diminta satu kali dan disimpan selama beberapa waktu. Jika password kosong maka tidak akan ditanyakan saat digunakan. Tidak mungkin memulihkan kata sandi yang terlupa.

Anda dapat mengubah kata sandi untuk kunci tersebut menggunakan perintah ssh-keygen -p.

Struktur kunci

(jika pertanyaan tentang lokasi dijawab secara default).
~/.ssh/id_rsa.pub- kunci publik. Itu disalin ke server tempat Anda perlu mendapatkan akses.
~/.ssh/id_rsa- kunci pribadi. Itu tidak dapat diperlihatkan kepada siapa pun. Jika Anda menyalin dan menempelkannya ke surat/obrolan alih-alih pub, maka Anda perlu membuat kunci baru. (Saya tidak bercanda, sekitar 10% orang yang Anda minta kunci ssh memposting id_rsa, dan dari sepuluh persen ini, 100% adalah laki-laki).

Menyalin kunci ke server

Di direktori pengguna yang ingin Anda masuki, jika Anda membuat file ~/.ssh/authorized_keys dan letakkan kunci publik di sana, Anda dapat masuk tanpa kata sandi. Harap dicatat bahwa izin file tidak boleh mengizinkan pengguna yang tidak berwenang untuk menulis ke file ini, jika tidak, ssh tidak akan menerimanya. Bidang terakhir dalam kunci adalah pengguna@mesin. Ini tidak ada hubungannya dengan otorisasi dan hanya berfungsi untuk kemudahan menentukan di mana kuncinya berada. Perhatikan bahwa bidang ini dapat diubah (atau bahkan dihapus) tanpa merusak struktur kunci.

Jika Anda mengetahui kata sandi pengguna, prosesnya dapat disederhanakan. Tim ssh-copy-id pengguna@server memungkinkan Anda menyalin kunci tanpa mengedit file secara manual.

Catatan: Manual ssh lama menyebutkan otor_keys2. Alasan: ada versi ssh pertama, lalu ada versi kedua (saat ini), mereka membuat set konfigurasi sendiri untuk itu, semua orang sangat bosan, dan versi kedua beralih ke versi tanpa "2" lama waktu yang lalu. Artinya, selalu otor_keys dan jangan memikirkan versi yang berbeda.

Jika Anda memiliki ssh pada port non-standar, maka ssh-copy-id memerlukan trik khusus saat bekerja: ssh-copy-id "-p 443 user@server" (perhatikan tanda kutip).

Kunci server

Pertama kali Anda masuk ke server, ssh menanyakan apakah Anda mempercayai kuncinya. Jika Anda menjawab tidak, koneksi ditutup. Jika ya, kuncinya disimpan ke file ~/.ssh/known_hosts. Tidak mungkin mengetahui di mana kuncinya (karena tidak aman).

Jika kunci server telah berubah (misalnya, server telah diinstal ulang), ssh berteriak bahwa kunci tersebut telah dipalsukan. Harap dicatat bahwa jika server belum disentuh, tetapi ssh menjerit, maka Anda membobol server yang salah (misalnya, komputer lain dengan IP yang sama muncul di jaringan, semua jenis jaringan lokal dengan 192.168.1.1, di antaranya ada beberapa juta orang di dunia, terutama yang menderita karenanya) . Skenario "orang jahat di tengah serangan" tidak mungkin terjadi, paling sering itu hanya kesalahan IP, meskipun jika "semuanya baik-baik saja" dan kuncinya telah berubah, ini adalah alasan untuk meningkatkan tingkat paranoia pasangan level (dan jika Anda memiliki otorisasi menggunakan kunci, dan server tiba-tiba meminta kata sandi - maka paranoia dapat diaktifkan 100% dan Anda tidak perlu memasukkan kata sandi).

Anda dapat menghapus kunci server yang dikenal dengan perintah ssh-keygen -R server. Dalam hal ini, Anda juga perlu menghapus kunci IP (disimpan secara terpisah): ssh-keygen -R 127.0.0.1.

Kunci server disimpan di /etc/ssh/ssh_host_rsa_key Dan /etc/ssh/ssh_host_rsa_key.pub. Mereka bisa berupa:
a) salin dari server lama ke server baru.
b) menghasilkan menggunakan ssh-keygen. Tidak perlu menentukan kata sandi (yaitu kosong). Server ssh tidak akan dapat menggunakan kunci dengan kata sandi.

Perhatikan bahwa jika Anda mengkloning server (misalnya, di mesin virtual), maka kunci ssh server harus dibuat ulang.

Lebih baik menghapus kunci lama dari know_hosts, jika tidak ssh akan mengeluh tentang kunci duplikat.

Menyalin file

Mentransfer file ke server terkadang membosankan. Selain bermain-main dengan sftp dan hal-hal aneh lainnya, ssh memberi kita perintah scp, yang menyalin file melalui sesi ssh.

Jalur scp/file saya [dilindungi email]:/lengkap/jalur/ke/baru/lokasi/

Anda juga dapat melakukan hal sebaliknya:
scp [dilindungi email]:/full/path/ke/file /path/ke/put/here

Peringatan ikan: Meskipun mc dapat terhubung melalui ssh, menyalin file besar akan sangat menyakitkan, karena... fish (modul mc untuk bekerja dengan ssh sebagai fs virtual) sangat lambat. 100-200kb adalah batasnya, barulah ujian kesabaran dimulai. (Saya ingat masa muda saya, ketika, tanpa mengetahui tentang scp, saya menyalin ~5GB melalui fish ke mc, butuh waktu lebih dari 12 jam di FastEthernet).

Mampu menyalin itu bagus. Tapi saya ingin "menyimpan sebagai" - dan segera ke server. Dan untuk menyalin dalam mode grafis bukan dari program khusus, tetapi dari program yang sudah dikenal.

Hal ini juga mungkin terjadi:

sshfs

Teori: Modul sekering memungkinkan Anda untuk “mengekspor” permintaan ke sistem file dari kernel kembali ke ruang pengguna ke program yang sesuai. Hal ini memungkinkan "sistem file semu" diimplementasikan dengan mudah. Misalnya, kami dapat memberikan akses ke sistem file jarak jauh melalui ssh sehingga semua aplikasi lokal (dengan beberapa pengecualian) tidak mencurigai apa pun.

Sebenarnya, ada pengecualian: sayangnya O_DIRECT tidak didukung (ini bukan masalah sshfs, ini masalah sekering secara umum).

Penggunaan: instal paket sshfs (itu akan menyeret sekring bersamanya).

Sebenarnya, contoh skrip saya yang memasang desunote.ru (terletak di komputer rumah saya - gambarnya ditampilkan di artikel ini) ke laptop saya:

#!/bin/bash sshfs desunote.ru:/var/www/desunote.ru/ /media/desunote.ru -o sambungkan kembali

Kami membuat file +x, beri nama, buka aplikasi apa pun, katakan simpan dan lihat:

opsi sshfs yang mungkin penting: -o sambungkan kembali (katakan mencoba menyambung kembali alih-alih kesalahan).

Jika Anda banyak bekerja dengan data dari root, maka Anda dapat (harus) membuat idmap:

-o idmap=pengguna. Cara kerjanya sebagai berikut: jika kita terhubung sebagai pengguna pupkin@server, dan bekerja secara lokal sebagai pengguna vasiliy, maka kita katakan “asumsikan bahwa file pupkin adalah file vasiliy.” baik, atau "root", jika kita terhubung sebagai root.

Dalam kasus saya, idmap tidak diperlukan, karena nama pengguna (lokal dan jarak jauh) sama.

Perhatikan bahwa kami dapat bekerja dengan nyaman hanya jika kami memiliki kunci ssh (lihat awal artikel), jika tidak, otorisasi kata sandi mengganggu 2-3 koneksi.

Anda dapat menonaktifkannya kembali dengan perintah gunung sekering -u /jalur, namun jika koneksi macet (misalnya tidak ada jaringan), maka Anda dapat/harus melakukan ini dari root: sudo umount -f /path.

Eksekusi kode jarak jauh

ssh dapat menjalankan perintah di server jauh dan segera menutup koneksi. Contoh paling sederhana:

Ssh pengguna@server ls /etc/

Akan menampilkan konten /etc/ di server, sementara kita akan memiliki baris perintah lokal.

Beberapa aplikasi ingin memiliki terminal kontrol. Mereka harus dijalankan dengan opsi -t:
ssh pengguna@server -t hapus_perintah

Ngomong-ngomong, kita bisa melakukan hal seperti ini:
ssh pengguna@server cat /some/file|awk "(cetak $2)" |local_app

Ini membawa kita ke fitur berikut:

Meneruskan stdin/keluar

Katakanlah kita ingin membuat permintaan ke suatu program dari jarak jauh, dan kemudian memasukkan outputnya ke file lokal

Sst [dilindungi email] perintah >file_saya

Katakanlah kita ingin mengeluarkan keluaran lokal dari jarak jauh

Perintah saya |scp - [dilindungi email]:/path/remote_file

Mari kita rumitkan contohnya - kita dapat mentransfer file dari server ke server: Kita membuat rantai untuk meletakkan stdin di 10.1.1.2, yang tidak dapat kita akses dari luar:

Perintah saya | ssh [dilindungi email]"scp - [dilindungi email]:/jalur/ke/file"

Ada juga teknik yang membingungkan dalam menggunakan pipa (silakan disarankan di komentar di LJ):

Tar -c * | ssh pengguna@server "cd && tar -x"

Tar mengemas file dengan mask secara lokal, menulisnya ke stdout, dari mana ssh membacanya, mentransfernya ke stdin di server jauh, di mana cd mengabaikannya (tidak membaca stdin), dan tar membaca dan membongkarnya. Jadi bisa dikatakan, scp adalah untuk masyarakat miskin.

Alias

Sejujurnya, saya tidak mengetahui atau menggunakannya sampai saat ini. Ternyata sangat nyaman.

Di perusahaan yang kurang lebih besar, seringkali nama servernya terlihat seperti ini: spb-MX-i3.extrt.int.company.net. Dan pengguna di sana tidak sama dengan pengguna lokal. Artinya, Anda harus login seperti ini: ssh [dilindungi email]. Setiap kali Anda mengetik, Anda tidak akan mendapatkan cukup sindrom terowongan. Di perusahaan kecil, masalahnya adalah sebaliknya - tidak ada yang memikirkan DNS, dan akses ke server terlihat seperti ini: ssh [dilindungi email]. Singkatnya, tapi tetap saja mengganggu. Ada lebih banyak drama jika kita memiliki port non-standar, dan, misalnya, versi pertama ssh (halo untuk Ciscos). Lalu semuanya terlihat seperti ini: ssh -1 -p 334 [dilindungi email]. Gantung dirimu. Saya bahkan tidak ingin membicarakan drama dengan scp.

Anda dapat mendaftarkan alias seluruh sistem pada IP (/etc/hosts), tetapi ini adalah solusi yang salah (baik pengguna dan opsi masih dicetak).

Mengajukan ~/.ssh/config memungkinkan Anda mengatur parameter koneksi, termasuk parameter khusus untuk server, yang paling penting, berbeda untuk setiap server. Berikut ini contoh konfigurasinya:

Host ric Nama Host ooo-horns-and-hooves.rf Administrator Pengguna ForwardX11 ya Kompresi ya Rumah Host Nama Host myhome.dyndns.org Pengguna vasya Kata SandiOtentikasi no

Semua opsi yang tersedia dapat dilihat di man ssh_config(jangan bingung dengan sshd_config).

Opsi Bawaan

Sesuai petunjuk UUSER: Anda dapat menentukan pengaturan koneksi default menggunakan konstruksi Host *, misalnya:

Host * Kompresi root pengguna ya

Hal yang sama dapat dilakukan di /etc/ssh/ssh_config (jangan bingung dengan /etc/ssh/ssh D _config), tetapi ini memerlukan hak root dan berlaku untuk semua pengguna.

Penerusan server X

Sebenarnya saya sedikit merusak bagian ini pada contoh konfigurasi di atas. ForwardX11 hanya itu.

Teori: Aplikasi grafis di Unix biasanya menggunakan server X (wayland sedang dalam perjalanan, tetapi masih belum siap). Ini berarti aplikasi dimulai dan terhubung ke server X untuk menggambar. Dengan kata lain, jika Anda memiliki server bare metal tanpa gui dan server x lokal (tempat Anda bekerja), maka Anda dapat mengizinkan aplikasi dari server untuk menggambar di desktop Anda. Biasanya menghubungkan ke server X jarak jauh bukanlah hal yang paling aman atau sepele. SSH memungkinkan Anda menyederhanakan proses ini dan membuatnya sepenuhnya aman. Dan kemampuan untuk mengurangi lalu lintas juga memungkinkan Anda bertahan dengan lebih sedikit lalu lintas (yaitu, mengurangi pemanfaatan saluran, yaitu mengurangi ping (lebih tepatnya, latensi), yaitu mengurangi kelambatan).

Kunci: -X - penerusan server X. -Y penerusan otorisasi.

Anda hanya perlu mengingat kombinasi ssh -XYC user@SERVER.
Dalam contoh di atas (nama perusahaan fiktif), saya terhubung ke server ooo-horns-i-kopyta.rf karena suatu alasan, tetapi untuk mendapatkan akses ke server Windows. Kita semua mengetahui keamanan Microsoft saat bekerja di jaringan, jadi tidak nyaman untuk mengekspos RDP di luar. Sebagai gantinya, kami terhubung ke server melalui ssh, dan kemudian menjalankan perintah rdesktop di sana:
ssh ric
rdesktop -k en-us 192.168.1.1 -g 1900x1200

Dan keajaibannya, muncul jendela login di windows pada desktop kita. Perhatikan bahwa ini dienkripsi dengan hati-hati dan tidak dapat dibedakan dari lalu lintas ssh biasa.

Proksi kaus kaki

Ketika saya berada di hotel lain (kafe, konferensi), wifi lokal paling sering berubah menjadi buruk - port tertutup, tingkat keamanan tidak diketahui. Dan tidak banyak kepercayaan pada titik akses orang lain (ini bukan paranoia, saya telah melihat bagaimana kata sandi dan cookie dicuri menggunakan laptop biasa yang mendistribusikan 3G ke semua orang dengan nama kafe terdekat (dan menulis hal-hal menarik dalam prosesnya )).

Port yang tertutup menimbulkan masalah tertentu. Entah Jabber akan ditutup, lalu IMAP, atau yang lainnya.

VPN biasa (pptp, l2tp, openvpn) tidak berfungsi dalam situasi seperti itu - VPN ini tidak diizinkan masuk. Diketahui secara eksperimental bahwa port 443 paling sering dibiarkan, dan dalam mode CONNECT, yaitu diteruskan "apa adanya" (http biasa juga dapat dibungkus secara transparan dalam SQUID).

Solusinya adalah kaus kaki-proxy mode operasi ssh. Prinsipnya: klien ssh terhubung ke server dan mendengarkan secara lokal. Setelah menerima permintaan, ia mengirimkannya (melalui koneksi terbuka) ke server, server membuat koneksi sesuai dengan permintaan dan mengirimkan semua data kembali ke klien ssh. Dan dia menjawab orang yang bertanya. Agar berfungsi, Anda perlu memberi tahu aplikasi untuk "menggunakan kaus kaki-proxy". Dan tentukan alamat IP proxy. Dalam kasus ssh, ini paling sering adalah localhost (dengan cara ini Anda tidak akan memberikan saluran Anda kepada orang asing).

Koneksi dalam mode sock-proxy terlihat seperti ini:
ssh -D 8080 pengguna@server

Karena fakta bahwa wifi orang lain seringkali tidak hanya jelek, tetapi juga lambat, ada baiknya untuk mengaktifkan opsi -C (kompres lalu lintas). Ternyata hampir seperti opera turbo (hanya saja tidak menekan gambar). Dalam penjelajahan sebenarnya di http, dibutuhkan sekitar 2-3 kali (baca - jika Anda mengalami nasib buruk 64kbit, maka Anda akan membuka halaman megabyte bukan dalam dua menit, tetapi dalam 40 detik. Menyebalkan, tapi masih lebih baik). Tapi yang utama: tidak ada cookie yang dicuri atau sesi yang disadap.

Bukan tanpa alasan saya mengatakan tentang port tertutup. Port 22 ditutup dengan cara yang persis sama seperti port jabber yang “tidak perlu”. Solusinya adalah dengan menggantung server pada port 443. Tidak ada gunanya menghapus dari 22, terkadang ada sistem dengan DPI (inspeksi paket mendalam) yang tidak mengizinkan "pseudo-ssl" Anda.

Seperti inilah konfigurasi saya:

/etc/ssh/sshd_config:
(fragmen)
Pelabuhan 22
Pelabuhan 443

Dan ini adalah bagian ~/.ssh/config dari laptop yang menjelaskan tentang vpn

Host vpn Nama Host desunote.ru Pengguna vasya Kompresi ya DynamicForward 127.1:8080 Port 443

(perhatikan bentuk penulisan localhost yang malas - 127.1, ini adalah metode yang sepenuhnya legal untuk menulis 127.0.0.1)

Penerusan port

Kami beralih ke bagian fungsi SSH yang sangat sulit dipahami, yang memungkinkan Anda melakukan operasi terowongan TCP yang membingungkan "dari server" dan "ke server".

Untuk memahami situasinya, semua contoh di bawah akan mengacu pada diagram ini:

Komentar: Dua jaringan abu-abu. Jaringan pertama menyerupai jaringan kantor pada umumnya (NAT), yang kedua adalah “gateway”, yaitu server dengan antarmuka putih dan abu-abu menghadap jaringan pribadinya. Dalam penalaran lebih lanjut, kita berasumsi bahwa laptop “kita” adalah A, dan “server” adalah B.

Tugas: Kami memiliki aplikasi yang berjalan secara lokal, kami perlu mengizinkan pengguna lain (di luar jaringan kami) untuk melihatnya.

Solusi: teruskan port lokal (127.0.0.1:80) ke alamat yang dapat diakses publik. Katakanlah B kita yang "dapat diakses publik" telah menempati port 80 dengan sesuatu yang berguna, jadi kita akan meneruskan ke port non-standar (8080).

Konfigurasi akhir: permintaan 8.8.8.8:8080 akan masuk ke localhost laptop A.

Ssh -R 127.1:80:8.8.8.8:8080 [dilindungi email]

Pilihan -R memungkinkan Anda mengalihkan dari jarak jauh ( R emote) port server ke port server Anda sendiri (lokal).
Penting: jika kita ingin menggunakan alamat 8.8.8.8, maka kita perlu mengaktifkan GatewayPorts di pengaturan server B.
Tugas. Di server “B” daemon tertentu (misalnya, server sql) sedang mendengarkan. Aplikasi kami tidak kompatibel dengan server (bit rate berbeda, OS, admin jahat yang melarang dan memberi batasan, dll). Kami ingin mengakses localhost jarak jauh secara lokal.

Konfigurasi akhir: permintaan ke localhost:3333 di "A" harus dilayani oleh daemon di localhost:3128 "B".

Sst -L 127.1:3333:127.1:3128 [dilindungi email]

Pilihan -L memungkinkan panggilan lokal ( L okal) langsung ke server jauh.

Tugas: Di server "B", layanan tertentu mendengarkan pada antarmuka abu-abu dan kami ingin memberikan kesempatan kepada kolega (192.168.0.3) untuk melihat aplikasi ini.

Konfigurasi akhir: permintaan ke alamat IP abu-abu kami (192.168.0.2) menuju ke antarmuka abu-abu server B.

Ssh -L 192.168.0.2:8080:10.1.1.1:80 [dilindungi email]

Terowongan bersarang

Tentu saja terowongan dapat diubah rutenya.

Mari kita memperumit tugas: sekarang kita ingin menunjukkan kepada rekan kita sebuah aplikasi yang berjalan di localhost di server dengan alamat 10.1.1.2 (pada port 80).

Solusinya rumit:
ssh -L 192.168.0.2:8080:127.1:9999 [dilindungi email] ssh -L 127.1:9999:127.1:80 [dilindungi email]

Apa yang terjadi? Kami memberitahu ssh untuk mengalihkan permintaan lokal dari alamat kami ke localhost server B dan segera setelah terhubung, luncurkan ssh (yaitu, klien ssh) di server B dengan opsi untuk mendengarkan di localhost dan meneruskan permintaan ke server 10.1.1.2 (di mana klien harus terhubung). Port 9999 dipilih secara sewenang-wenang, yang utama adalah cocok pada panggilan pertama dan kedua.

Membalikkan Proksi Sox

Jika contoh sebelumnya tampak sederhana dan jelas bagi Anda, coba tebak apa yang akan dilakukan contoh ini:
ssh -D 8080 -R 127.1:8080:127.1:8080 [dilindungi email] ssh -R 127.1:8080:127.1:8080 [dilindungi email]

Jika Anda adalah petugas keamanan yang tugasnya melarang penggunaan Internet di server 10.1.1.2, maka Anda dapat mulai mencabut bulu-bulu di pantat Anda, karena perintah ini mengatur akses Internet untuk server 10.1.1.2 melalui sox proxy yang berjalan di komputer “A”. Lalu lintas sepenuhnya dienkripsi dan tidak dapat dibedakan dari lalu lintas SSH lainnya. Dan lalu lintas keluar dari komputer, dari sudut pandang jaringan “192.168.0/24”, tidak dapat dibedakan dari lalu lintas biasa komputer A.

terowongan

Jika sampai saat ini departemen keamanan masih belum bersinar dan ssh masih belum termasuk dalam daftar musuh keamanan nomor satu, inilah pembunuh utama dari semuanya: terowongan IP atau bahkan ethernet. Dalam kasus yang paling radikal, ini memungkinkan Anda untuk melakukan tunnel dhcp, terlibat dalam spoofing arp jarak jauh, bangun di lan dan kemarahan tingkat kedua lainnya.

(sayangnya, saya sendiri belum pernah menggunakannya).

Sangat mudah untuk memahami bahwa dalam kondisi seperti itu tidak mungkin untuk menangkap terowongan seperti itu dengan DPI apa pun (inspeksi paket mendalam) - baik ssh diperbolehkan (baca - lakukan apa pun yang Anda inginkan), atau ssh dilarang (dan Anda dapat dengan aman keluar dari terowongan tersebut ditemani orang idiot tanpa merasa menyesal sedikit pun).

Penerusan otorisasi

Kalau dipikir-pikir itu saja, maka......namun, berbeda dengan penulis yang belum menulis “dari bawah”, pembaca melihat terlebih dahulu bahwa ada banyak huruf di bawah dan tidak ada intrik.

OpenSSH memungkinkan Anda menggunakan server sebagai batu loncatan untuk terhubung ke server lain, meskipun server tersebut tidak tepercaya dan dapat disalahgunakan sesuka hati.

Saya akan mengulangi gambarnya:

Katakanlah kita ingin terhubung ke server 10.1.1.2, yang siap menerima kunci kita. Namun kami tidak ingin menyalinnya ke 8.8.8.8, karena ini adalah halaman umum dan separuh orang memiliki sudo dan dapat mengobrak-abrik direktori orang lain. Komprominya adalah memiliki kunci ssh “berbeda” yang akan memberi otorisasi [dilindungi email] ke 10.1.1.2, tetapi jika kita tidak ingin membiarkan sembarang orang dari 8.8.8.8 ke 10.1.1.2, maka ini bukanlah suatu pilihan (terutama karena mereka tidak hanya dapat menggunakan kunci tersebut, tetapi juga menyalinnya sendiri “untuk hari hujan”).

Ssh menawarkan kemampuan untuk meneruskan agen ssh (ini adalah layanan yang meminta kata sandi untuk sebuah kunci). Pilihan ssh -A meneruskan otorisasi ke server jauh.

Panggilannya terlihat seperti ini:

Ssst-A [dilindungi email] ssh [dilindungi email]

Klien ssh jarak jauh (di 8.8.8.8) dapat membuktikan ke 10.1.1.2 bahwa kita adalah kita hanya jika kita terhubung ke server ini dan telah memberikan klien ssh akses ke agen otorisasinya (tetapi bukan kuncinya!).

Dalam kebanyakan kasus, ini berhasil.

Namun, jika server benar-benar buruk, maka root server dapat menggunakan soket untuk meniru identitas saat kita terhubung.

Ada metode yang lebih ampuh lagi - ini mengubah ssh menjadi pipa sederhana (dalam arti "pipa") yang melaluinya kita bekerja dengan server jarak jauh.

Keuntungan utama dari metode ini adalah independensi penuh dari kepercayaan server perantara. Dia dapat menggunakan server ssh palsu, mencatat semua byte dan semua tindakan, mencegat data apa pun dan memalsukannya sesuai keinginannya - interaksi terjadi antara server "yang dihasilkan" dan klien. Jika data server akhir dipalsukan, maka tanda tangannya tidak akan cocok. Jika data tidak dirusak, maka sesi dibuat dalam mode aman, jadi tidak ada yang bisa disadap.

Saya tidak tahu pengaturan keren ini, jadi saya menggali redrampage.

Pengaturannya didasarkan pada dua opsi ssh: opsi -W (yang mengubah ssh menjadi “pipa”) dan opsi konfigurasi Perintah Proxy(sepertinya tidak ada opsi baris perintah), yang mengatakan "jalankan program dan lampirkan ke stdin/outnya". Opsi ini muncul baru-baru ini, sehingga pengguna centos berada dalam masalah.

Tampilannya seperti ini (angka pada gambar di atas):

Ssh/konfigurasi:
Host raep Nama Host 10.1.1.2 Pengguna pengguna2 ProxyCommand ssh -W %h:%p [dilindungi email]

Nah, hubungannya sepele: ssh raep .

Izinkan saya mengulangi poin penting: server 8.8.8.8 tidak dapat mencegat atau memalsukan lalu lintas, menggunakan agen otorisasi pengguna, atau mengubah lalu lintas. Larangan - ya, bisa. Namun jika Anda mengizinkannya, itu akan melewati Anda tanpa dekripsi atau modifikasi. Agar konfigurasi berfungsi, Anda harus memiliki kunci publik Anda sendiri di Authorized_keys [dilindungi email], dan di [dilindungi email]

Tentu saja, koneksi dapat dilengkapi dengan semua pernak-pernik lainnya - penerusan porta, penyalinan file, proxy kaus kaki, terowongan L2, terowongan server X, dll.
terowongan ssh Tambahkan tag

Halo! Saya tertarik dengan pertanyaan: bagaimana cara terhubung melalui SSH ke komputer di rumah Anda melalui Internet. Saya memiliki server FreeSSHd yang diinstal di rumah. Seperti yang saya pahami, saya perlu membuka port 22 pada IP eksternal Alex

Ya, kebutuhan itu sering muncul. Saya membicarakan banyak hal di artikel itu, tetapi di sini kita akan berbicara secara eksklusif tentang SSH, karena Alex dengan baik hati memberi kami kesempatan ini. Selain itu, saya sendiri sangat tertarik dengan SSH, dan ini juga di Windows... mmm.

Apa itu SSH dan mengapa itu diperlukan?

Intinya SSH itu S aman SH elo. Protokol untuk akses aman ke shell kontrol. Oleh karena itu, ia menyediakan akses khusus ke baris perintah, karena Shell diterjemahkan sebagai kerang dan inilah artinya cangkang kontrol teks. Namun secara umum, protokol ini terkenal karena memungkinkan lalu lintas lain lewat di dalamnya, dan dalam bentuk terenkripsi. Jadi, protokol koneksi sistem file aman disebut SFTP dan berjalan di atas SSH. Tapi itu benar-benar dapat melakukan terowongan koneksi lain - baik itu HTTP atau bahkan RDP. Intinya, ini ternyata adalah “VPN yang siap sedia”.

Di sini Alex telah menyelesaikan separuh pekerjaannya; dia menginstal dan meluncurkan FreeSSHd di komputer rumahnya. Ini memungkinkan Anda terhubung ke Windows melalui SSH. Dalam hal ini, “mengizinkan” diucapkan dengan sangat kuat. Karena solusi ini berfungsi pada Windows. Pertama, ia tidak memiliki antarmuka teks yang layak - baris perintah, untuk kontrol.

Setidaknya yang biasa - cmd - tidak memungkinkan Anda melakukan banyak hal dengan mesin jarak jauh. Ada juga Powershell - ini adalah solusi yang lebih modern dan kuat. Freesshd memungkinkan Anda mengubah konsol ke PowerShell, tetapi saya tidak dapat menyambungkannya. Saya terhubung ke CMD - tetapi sama sekali tidak dapat digunakan:

Kedua, dalam kasus FreeSSHd, saya tidak dapat terhubung ke komputer Windows bahkan melalui jaringan lokal, apalagi terhubung melalui Internet. Atau lebih tepatnya, koneksi dapat dilakukan, tetapi layanan terhenti dan mogok; Anda tidak akan dapat mengelola host Windows dengan cara ini.

Oleh karena itu, saya berasumsi bahwa Alex memerlukan server ssh di Windows untuk terhubung ke sistem file atau menggunakannya sebagai VPN, mem-proxy sesuatu melalui SSH. Meskipun saya ragu FreeSSHd akan mengizinkan ini. Karena yang ketiga: bahkan tidak menyimpan pengaturan; ketika layanan dimulai ulang, semuanya hilang. Secara umum, saya sangat berharap Alex akan memberi tahu kami di komentar mengapa dia membutuhkan ini.

Bagaimana lagi Anda bisa menjalankan SSH di Windows?

Ada solusi yang lebih bisa diterapkan - Powershelserver. Meski juga terdapat bug, setidaknya tidak crash. Oleh karena itu, saya akan merekomendasikan menggunakannya untuk terhubung melalui SSH ke server Windows.

Pertama, ia bekerja secara stabil tanpa crash. Dan melaluinya Anda benar-benar dapat mengontrol windows melalui PowerShell.

Semua pengaturan disimpan secara normal. Fungsi yang sama tersedia seperti di FreeSSHd dan bahkan lebih banyak lagi - Anda dapat menggunakan SCP - ini menyalin file melalui SSH.

Tapi yang paling keren adalah konsolnya! Berhasil, Tuan-tuan!

Saya terhubung dengan mudah, tanpa repot menambahkan pengguna (ini perlu dilakukan di freesshd). Dan perintah sederhana untuk melihat tabel routing bekerja dengan sempurna dan memberikan informasi yang diperlukan. Frisssh “jatuh” pada saya tepatnya ketika saya mencoba melihat netstat -rn

Di sini Anda benar-benar dapat melihat bahwa karakter Rusia tidak ditampilkan. Jadi mudah untuk mengaturnya bersama kami, saya cukup mengatur pengkodean yang saya perlukan di server PowerShell, restart, sambungkan kembali...

Mengatur Pengkodean di Powershellserver

Sekarang kami memiliki SSH penuh dan dapat mengelola Windows sepenuhnya melalui konsol.

Microsoft akan membuat solusinya sendiri untuk SSH

Omong-omong, Microsoft mengumumkan pada musim panas lalu bahwa mereka akan mengembangkannya warga asli Dukungan SSH untuk Powershell di Windows versi baru. Ada pengumuman berita di Habré dan pcweek (dan banyak lagi). Oleh karena itu, kami hanya bisa menantikan peristiwa penting ini, karena ini benar-benar akan menjadi terobosan dalam pekerjaan jaringan yang heterogen.

Saya tidak memeriksa fungsi lainnya - sftp dan scp, tetapi untuk beberapa alasan saya yakin fungsi tersebut juga akan berfungsi dengan baik.

Bagaimana cara membuka port SSH dari luar?

Jadi, kita telah sampai pada rahasia yang menjadi dasar artikel ini dimulai. Saya akan menjawab pertanyaan pembaca.

Penerusan port pada router atau modem

Untuk menyambung ke komputer dari luar, Anda benar-benar perlu melakukan NAT, atau, dalam kasus tertentu, . Cara melakukan ini tergantung pada perangkat yang digunakan sebagai gateway. Ini bisa berupa modem ADSL atau . Dalam kebanyakan kasus, instruksi terperinci untuk perangkat Anda dapat dengan mudah ditemukan melalui pertanyaan seperti “penerusan port perangkat_model" atau "penerusan porta perangkat_model»

Ini tampilannya di router rumah Zyxel Keenetic Lite saya:

Dan inilah tampilannya pada modem ADSL dengan fungsi router Linksys WAG200G:

Selain itu, pada beberapa penyedia, hal ini mungkin secara teknis tidak dapat dilakukan karena mereka tidak menyediakan "putih" .

Meneruskan port ke server jarak jauh menggunakan terowongan SSH

Dalam hal ini, satu-satunya cara yang tersedia untuk terhubung melalui SSH adalah dari mesin Windows lokal (mesin yang sama yang ingin kita sambungkan melalui SSH) ke server jarak jauh. Dalam hal ini, Anda harus memiliki akses SSH ke beberapa server di Internet.

Menyiapkan terowongan SSH "terbalik".

Penerusan seperti itu dapat dengan mudah dilakukan menggunakan klien SSH sederhana Putty (ada juga) Kemudian Anda dapat terhubung ke server yang sangat jauh ini melalui port yang diteruskan.

Ini pada dasarnya adalah sebuah lingkaran di sini. Kami membuka sesi SSH dari Windows ke server jarak jauh, dan di dalam koneksi ini kami menyalurkan port SSH dari Windows Powershellserver (atau FreeSSHd) itu sendiri ke port lokal 3322 dari server jarak jauh. Dan di sesi yang sama sekarang kita terhubung kembali ke Windows di Powershell melalui port yang sama 3322... Saya harap Anda tidak bingung. Tapi... Ini ajaib, kawan! :) Terowongan SSH adalah dunia yang istimewa, dengan bantuannya Anda dapat melakukan hal-hal luar biasa, membuka pintu sehingga semua penjaga keamanan akan menangis sedih jika mereka tiba-tiba mengetahui semua ini... Tapi oh baiklah.

Nah, jika Anda perlu berbagi port SSH Windows dengan dunia, cukup tentukan ip_server:3322 sebagai tujuan dalam pengaturan terowongan terbalik. Anda akan dapat terhubung ke Windows melalui SSH dari mana saja yang memiliki akses ke server ini.

Bagaimana cara memeriksa apakah port diteruskan dengan benar?

Sangat sederhana. Anda perlu memeriksa apakah itu terbuka. Dalam kasus SSH, port terbuka akan merespons dengan pesan tentang versinya. Cara paling sederhana untuk memeriksa port adalah utilitas telnet.

Cukup ketik di baris perintah, dipisahkan dengan spasi:

port domain_atau_IP telnet

Jika port tersedia, Anda akan melihat sesuatu seperti ini:

Respons SSH jika port tersedia

Jika port tidak tersedia karena alasan tertentu, Anda akan melihat “koneksi ditolak” atau “batas waktu koneksi”. Dalam kasus pertama, ini akan terjadi seketika, dan berarti port ditutup oleh firewall.

Dalam kasus kedua, ini akan terlihat seperti "hang" dan dapat bertahan hingga beberapa menit - klien telnet akan mencoba membuat sambungan. Ini mungkin juga berarti pemblokiran oleh firewall, tetapi jenisnya berbeda. Entah karena host yang ditentukan tidak tersedia atau port di dalamnya ditutup.

Jika Anda dapat terhubung melalui telnet, tekan kombinasi tombol Ctrl+] dan enter berhenti, lalu Masuk. Jika tidak, Anda tidak akan dapat menghentikan sesi dan harus membuka jendela konsol baru jika Anda masih membutuhkannya.

Ada banyak peluang untuk mengatur akses jarak jauh ke komputer Anda melalui koneksi Internet. Beberapa di antaranya sangat kompleks dan hanya digunakan oleh spesialis di lingkungan profesional, sementara yang lain sangat sederhana dan dapat dikuasai bahkan oleh pengguna yang tidak berpengalaman sekalipun. Kami telah menulis tentang beberapa metode, khususnya tentang program TeamViewer dan protokol VNC.

Nuansa bekerja dengan protokol SSH di Ubuntu.

Pada artikel ini kita akan berbicara tentang protokol koneksi aman SSH, yang akhir-akhir ini hampir menjadi standar di kalangan pengguna Linux. Ini sangat aman karena mendukung enkripsi dan juga sangat mudah dikonfigurasi. Kami akan melihat fitur-fitur protokol SSH, dan juga mempelajari cara mengkonfigurasi server dan klien. Yang Anda perlukan hanyalah memiliki komputer dengan sistem operasi Ubuntu terinstal dan koneksi Internet.

Protokol Secure Shell, juga dikenal sebagai SSH, adalah protokol khusus untuk mengamankan akses jarak jauh ke komputer melalui koneksi jaringan. Protokol ini memiliki banyak kemampuan, termasuk membuat sambungan aman, meluncurkan terminal baris perintah di komputer yang Anda sambungkan dari jarak jauh, menjalankan aplikasi GUI, mentransfer file, dan menyebarkan jaringan pribadi.

Ada banyak utilitas yang bertanggung jawab untuk mengelola protokol. Pada sistem operasi Ubuntu yang paling terkenal adalah Open SSH. Ini adalah produk gratis dengan lisensi terbuka dan serangkaian fungsi paling penting yang lengkap. Klien untuk mengelola koneksi SSH sudah termasuk dalam distribusi Ubuntu, Anda hanya perlu menginstal dan mengkonfigurasi komponen server. Kontrol dilakukan melalui perintah di terminal.

Menginstal SSH di Ubuntu

Karena protokol klien SSH untuk pengelolaannya adalah standar yang diterima secara umum, Anda dapat menginstalnya menggunakan perintah singkat di terminal Ubuntu. untuk melakukan ini, luncurkan terminal itu sendiri dengan menekan pintasan keyboard Ctrl + Alt + T, lalu gunakan perintah sudo apt-get install ssh. Setelah siap mengunduh, utilitas akan menanyakan apakah Anda ingin melanjutkan. alihkan keyboard ke bahasa Rusia dan tekan D. Di komputer Ubuntu Anda, instalasi ssh akan selesai dalam beberapa detik. Jika Anda ingin mengaktifkan startup otomatis saat startup sistem, gunakan perintah sudo systemctl aktifkan sshd. Oleh karena itu, jika nanti Anda ingin menghapus layanan dari startup otomatis, Anda memerlukan perintah sudo systemctldisable sshd.

Sekarang Anda dapat memeriksa cara kerja semuanya. Yang perlu Anda lakukan hanyalah mencoba terhubung ke server SSH lokal: ssh localhost. Utilitas pasti akan meminta kata sandi pengguna super, dan juga menawarkan untuk menambahkan alamat yang dimasukkan ke daftar alamat yang diizinkan. Jika semuanya berjalan sesuai harapan Anda, Anda akan melihat pesan kecil yang diakhiri dengan pemberitahuan tentang tanggal koneksi terakhir ke alamat tersebut.

Sekarang Anda dapat terhubung ke komputer mana pun di jaringan jika Anda mengetahui alamat IP dan nama penggunanya. Untuk melakukan ini, di terminal Anda perlu memasukkan perintah dalam format berikut:

ssh nama pengguna@ip_address

Misalnya jika Anda ingin terhubung ke komputer Vasya Pupkin dengan alamat 132.14.25.10, maka perintahnya akan terlihat seperti ini:

ssh [dilindungi email]

Menyiapkan SSH di Ubuntu

Agar dapat bekerja dengan benar dan aman dengan server SSH, server tersebut harus dikonfigurasi dengan cara tertentu. Untuk melakukan ini, Anda perlu mengedit file parameter sshd_config yang terletak di direktori /etc/ssh. Perlu dicatat bahwa itu tidak dapat diubah hanya dengan membukanya melalui pengelola file di editor teks biasa. Sistem akan memberi tahu Anda tentang hak yang tidak mencukupi, dan Anda tidak akan dapat menyimpan perubahannya. Oleh karena itu, Anda kembali memerlukan terminal dan pengetahuan tentang beberapa perintah, yang sekarang akan kita bahas. Mari kita lihat langkah-langkah yang diperlukan untuk menyiapkan server ssh di sistem operasi Ubuntu.


Apa yang dapat Anda ubah di pengaturan SSH


Perintah minimum yang diperlukan


Pada artikel ini kami akan memberi tahu Anda cara menginstal SSH di Linux, Windows dan Mac, cara mengkonfigurasinya, dan cara menggunakannya! Setiap detailnya! Ini akan menarik!

SSH adalah protokol populer untuk kendali jarak jauh (administrasi) sistem operasi berbasis kernel Linux dan Unix. Untuk pemula Linux, tidak sepenuhnya jelas cara menginstal protokol ini, mengkonfigurasinya, dan menggunakannya, jadi kami memutuskan untuk menulis artikel ini untuk memperbaikinya!

Salah satu sistem operasi terpopuler yang berjalan di kernel Linux adalah Ubuntu, jadi kami akan menggunakannya untuk menjelaskan tentang ssh.

Pertama, kami akan menjelaskan semua langkah menggunakan contoh Linux, lalu di Mac dan Windows!

Menginstal SSH di OS Linux

Dalam 99,99% kasus, Linux sudah menginstal klien ssh, yang dengannya Anda dapat terhubung ke mesin jarak jauh. Tetapi jika Anda ingin terhubung ke komputer yang Anda gunakan saat ini atau ke komputer lain, Anda perlu “mengunduh server ssh”.

Ini sangat mudah dilakukan, semua yang Anda butuhkan sudah ada di repositori (ala toko perangkat lunak), buka terminal dan masukkan perintah:

Sudo apt install openssh-server

Artinya, itu perlu bagian server, yang membuat komputer dapat diakses di jaringan melalui protokol ssh. Makan bagian klien, yang sudah terinstal di komputer Anda, dan menggunakannya, Anda terhubung ke komputer jarak jauh.

Koneksi melalui SSH (dengan kata sandi)

Buka terminal dan masukkan perintah untuk terhubung ke mesin jarak jauh:

Sst Nama belakang@alamat IP

Pertama kita tulis ssh, lalu username yang ada di mesin remote, lalu tanda @ (anjing) dan alamat IP. Berikut ini contohnya:

Ssst, Sasha @ 100.08.30.48

Sebagai aturan, koneksi ssh terjadi pada port 22, jika Anda mengubahnya secara paksa, Anda harus menentukannya. Untuk melakukan ini, tulis -p nomor di akhir. Berikut ini contohnya:

Ssst, Sasha @ 100.08.30.48 -P 3040

Setelah Anda terhubung, dan jika ini adalah koneksi pertama ke mesin, Anda perlu menambahkan mesin tersebut ke mesin tepercaya - tulis ya dan tekan Enter. Ini dilakukan sekali.

Buat kunci SSH dan sambungkan tanpa kata sandi!

Agar tidak mengingat password dan tidak memasukkannya setiap saat, apalagi jika Anda memiliki banyak server Linux, Anda bisa membuat SSH key khusus. Kunci ini akan memungkinkan Anda untuk terhubung dari mesin yang sudah “dikenal” dengan server “dikenal”, tanpa menggunakan kata sandi.

Bagaimana cara membuat kunci SSH?

Kami akan membuat kunci di komputer yang Anda gunakan saat ini, dan kemudian Anda perlu menyalinnya ke server kami!

Buat kunci untuk komputer saat ini:

Ssh-keygen -t rsa

Kunci telah dibuat, sekarang Anda perlu menambahkannya ke mesin atau server jarak jauh.

Bagaimana cara menambahkan kunci SSH ke server?

Untuk melakukan ini, masukkan perintah:

ssh-salin-id Nama belakang@alamat IP

Ssh-salin-id sasha @ 100.08.30.48

Anda sekarang memiliki kemampuan untuk terhubung ke server atau mesin lain tanpa menggunakan kunci, cukup dengan memasukkan nama pengguna dan kata sandi Anda!

Klien SSH Windows

Salah satu program terpopuler untuk bekerja dengan server Linux melalui SSH di Windows adalah program Putty. Anda dapat mengunduh klien Windows SSH ini di alamat ini - putty.org.

Menghubungkan melalui SSH dengan kata sandi di Windows

Menghubungkan ke Putty melalui SSH sangat mudah! Masukkan alamat IP; jika Anda mengubah port, tentukan port lain dan klik Buka:
dan setelah terhubung, login dan kata sandi!

Menghubungkan melalui SSH menggunakan kunci di Windows

Jika Anda tidak ingin memasukkan kata sandi setiap saat, tetapi menggunakan kunci ssh di Putty, seperti di Linux, Anda harus membuat kunci terlebih dahulu dan kemudian mentransfernya ke server.

Buat kunci


Jangan tutup programnya dulu dan jalankan Putty untuk terhubung

Mentransfer kunci


Klien Mac SSH

Karena macOS didasarkan pada sistem UNIX, Anda dapat terhubung melalui ssh langsung dari terminal!

Jika Anda tidak ingin menggunakan kata sandi, Anda harus menginstal Homebrew terlebih dahulu:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Ada juga klien mac ssh yang nyaman - Termius.

Klien SSH untuk Android dan iOS

Klien SSH yang paling nyaman untuk iOS dan Android adalah aplikasi Termius!

Mentransfer dan mengunduh file melalui SSH (SCP)

Untuk mengunggah file dari mesin lokal Anda ke server melalui ssh di Linux dan macOS:

Scp file1.tar root@ip_adress:/home/dir

Salin file dari server ke komputer Linux atau macOS lokal Anda:

Scp nama pengguna@ip_adress:/home/file1.tar /var/www/

Dari server, ke server:

Scp pengguna@server_ip1:/home/file.txt pengguna@server_ip2:/home/

Untuk Windows

Untuk memindahkan file melalui SSH di Windows, gunakan pscp.

file pscp.exe.zip root@ip_server: /var/www/

Menyiapkan SSH

Jika Anda perlu menambahkan login SSH langsung sebagai root:

Mengubah port SSH

Karena secara default ssh dikonfigurasi pada port 22, penggunaan server menjadi tidak aman. Oleh karena itu, ada baiknya mengubah port!

dan ubah nilai Port ke nilai yang diperlukan:

# Port, IP, dan protokol apa yang kami dengarkan untuk Port 22

Login hanya menggunakan kunci SSH:

Menggunakan nano, edit dokumen sshd_config, masukkan perintah:

Sudo nano /etc/ssh/sshd_config

Ubah nilai PasswordAuthentication dari ya menjadi tidak:

Otentikasi RSA ya Otentikasi Pubkey ya Otentikasi Kata Sandi no

Apakah Anda masih memiliki pertanyaan? Tulis di komentar, beri tahu kami apa yang Anda lakukan atau sebaliknya!

Itu saja! Baca lebih banyak artikel dan instruksi bermanfaat di bagian ini. Tetap ikuti situs ini, itu akan menjadi lebih menarik!

Pada artikel ini kita akan melihat cara modern dan nyaman untuk bekerja dengan server melalui SSH dengan VPS dari Infobox dan cloud.

Kami akan memberi tahu Anda tidak hanya tentang metode koneksi biasa, tetapi juga tentang mengatur koneksi stabil melalui Internet yang tidak stabil (misalnya, modem 3G), serta utilitas tambahan yang membantu Anda bekerja melalui SSH.

Jika Anda adalah pengguna Windows dan Anda perlu terhubung dengan cepat dan mudah ke server Linux, buka bagian “Putty atau cara cepat terhubung ke SSH dari Windows”.

Apa yang perlu Anda ketahui untuk terhubung melalui SSH

Untuk terhubung, Anda memerlukan:
  • Alamat IP server
  • login
  • kata sandi
Dimana mendapatkan data untuk terhubung ke server VPS NG dari Infobox
Setelah memesan layanan, masuk ke panel kontrol https://panel.infobox.ru.
Pilih layanan “VPS NG” di sudut kanan atas panel kontrol dari daftar drop-down.
Lalu buka tab “VPS”.

Di bagian ini Anda akan melihat alamat ip server dan Anda dapat menginstal kata sandi untuk mengakses server.


Gunakan nama pengguna Anda untuk terhubung akar, alamat IP dari halaman ini dan diinstal kata sandi.
Jika Anda lupa kata sandi Anda, klik item “Edit pengaturan akses” yang ditunjukkan pada gambar di atas.

Dimana mendapatkan data untuk terhubung ke server VPS dari Infobox
Masuk ke panel kontrol https://panel.infobox.ru.
Pilih layanan VPS di sudut kanan atas panel kontrol di daftar drop-down (nama layanan berisi nama OS yang dipesan dan wilayah lokasi).

Lalu buka tab “Manajemen VPS”.


Gunakan nama pengguna akar, kata sandi dan alamat IP server dari halaman ini.

Dimana mendapatkan data untuk terhubung ke server InfoboxCloud
Setelah membuat server, data koneksi akan dikirimkan kepada Anda melalui email. Ini cukup untuk terhubung.

Jika Anda kehilangan email dengan data akses Anda dan ingin mengakses server
Secara default, login administrator server adalah: root

Masuk ke panel kontrol di: https://panel.infobox.ru.
Pilih layanan “Server Cloud” di sudut kanan atas panel kontrol dari daftar drop-down.

Alamat IP khusus untuk server dapat dilihat di tab “Infrastruktur Cloud” pada panel kontrol.

Jika bidang " Alamat IP khusus" kosong, artinya saat membuat server Anda tidak menambahkan setidaknya 1 alamat IP khusus ke server (dan oleh karena itu tidak ada akses ke server melalui Internet, hanya dari jaringan lokal).

Untuk menambahkan alamat IP khusus, klik pada nama server.

Di grup Pengaturan jaringan, klik Konfigurasi.


Pastikan bandwidth (kecepatan) jaringan Anda mencukupi (atau tambahkan lebih banyak jika perlu).
Kemudian klik “Tambahkan Alamat IPv4” dan klik “Simpan Perubahan”.


Sekarang server memiliki alamat IP khusus.


Untuk mengubah kata sandi akses server, klik “Ubah”, seperti yang ditunjukkan pada gambar di atas. Dengan cara ini Anda dapat mengatur kata sandi untuk mengakses server.
Sekarang kamu tahu alamat ip server, masuk ( akar) Dan kata sandi.

Menyiapkan klien SSH

Untuk Windows
Untuk terhubung ke server Anda memerlukan klien SSH. Jika Anda perlu terhubung dengan cepat, Putty direkomendasikan. Jika Anda perlu bekerja dengan utilitas unix seperti scp, rsync dan ssh-copy-id, gunakan Cygwin.
Putty atau cara cepat terhubung ke SSH dari Windows
Unduh penginstal Putty untuk Windows dari bagian Versi rilis terbaru dan instal Putty dengan pengaturan default.


Luncurkan Putty (Mulai -> Semua Aplikasi -> Putty -> Putty).

Masukkan alamat IP server. Pastikan port 22 dipilih dan jenis koneksinya adalah SSH dan klik Buka.


Anda akan ditanya apakah Anda mempercayai server yang Anda sambungkan. Anda harus menjawab “Ya”.


Jendela koneksi akan terbuka. Gunakan root sebagai login Anda dan kata sandi server Anda sebagai kata sandi Anda. Kata sandi dapat ditempel dari clipboard dengan tombol kanan mouse. Itu tidak ditampilkan saat Anda mengetik dan menempel karena alasan keamanan.


Koneksi berhasil dibuat.

Lingkungan Cygwin atau Unix di komputer Windows Anda
Saat bekerja dengan server Linux, Anda mungkin memerlukan lingkungan serupa di komputer Anda. Sangat mudah untuk menggunakan satu set utilitas di server dan komputer kerja, jadi pastikan untuk mencoba Cygwin. Sekilas Linux tampak rumit. Semakin Anda menguasai OS ini secara bertahap, Anda akan semakin membutuhkan Cygwin. Hal-hal baik itu membuat ketagihan.

Koneksi Internet tidak stabil saat terhubung melalui SSH - apa yang harus dilakukan?

Seringkali, ketika bekerja melalui jaringan yang tidak stabil (misalnya, melalui Internet seluler 3G/4G atau berbagai titik akses WiFi), koneksi ke SSH terputus. Mari kita lihat apa yang dapat dilakukan di tingkat klien untuk mencegah perlunya penyambungan kembali. Alat-alat ini tidak cocok untuk melakukan operasi penting di server (misalnya, peningkatan OS). Untuk melakukan operasi penting, Anda juga harus menggunakan utilitas yang dijelaskan di bagian artikel selanjutnya.
Tujuan dari utilitas di bagian ini adalah untuk membuat pekerjaan melalui SSH lebih nyaman bagi pengguna.
AutoSSH memulai salinan klien ssh dan memonitor koneksi, memulai ulang klien ssh jika perlu.

Autossh menggunakan ssh untuk membangun loop pengalihan ssh (koneksi dari komputer lokal ke komputer jarak jauh dan sebaliknya) dan meneruskan data pengujian, mengharapkannya kembali. Ini juga mendukung penggunaan layanan gema jarak jauh untuk mengirim kembali data pengujian.

AutoSSH hanya mendukung 3 opsi:

  • -M<порт>[: port gema]- digunakan untuk menentukan port pemantauan atau port pemantauan dan port layanan gema. Jika port layanan gema tidak ditentukan, port bernomor berikutnya akan digunakan. Misalnya, jika flag -M 20000 disetel, data pengujian akan dikirim pada port 20000 dan diterima pada port 20001. Jika Anda menentukan -M 0, pemantauan koneksi akan dinonaktifkan dan autossh akan memulai ulang ssh hanya ketika ssh keluar (Anda bisa gunakan ini dengan opsi ServerAliveInterval dan ServerAliveCountMax di OpenSSH jika pemantauan tidak dapat digunakan dalam situasi Anda);
  • -F- mengirimkan autossh ke latar belakang bahkan sebelum ssh dimulai (Anda tidak akan dapat memasukkan kata sandi dalam mode ini);
  • -V- menampilkan versi autossh.
Semua argumen lainnya diteruskan sebagai opsi ssh.

Untuk memastikan bahwa ketika koneksi dipulihkan Anda tidak perlu memasukkan kata sandi lagi, izinkan pengguna ini untuk masuk ke server menggunakan kunci tersebut, seperti yang ditunjukkan pada bagian di atas.

Menginstal AutoSSH di Cygwin pada Windows
Jika menggunakan Cygwin di Windows, masukkan:
pembaruan apt-cyg
apt-cyg instal autossh


Sekarang Anda dapat terhubung ke server:
autossh -M 20000 root@server_ip_address


Koneksi telah berhasil dibuat.

Secara umum, autossh adalah alat yang cukup berguna untuk bekerja pada koneksi Internet yang tidak stabil dan untuk mengatur terowongan SSH di server (kami akan membahas skenario ini dalam artikel terpisah). Kerugian dari autossh adalah utilitas ini tidak menyelesaikan masalah jika ada penundaan yang signifikan pada jaringan saat memasukkan perintah (yang terjadi pada jaringan 3G). Dalam hal ini, Anda akan menunggu respons dari server untuk setiap karakter yang Anda masukkan, yang agak memperlambat segalanya. Namun pada kondisi pengoperasian normal, autossh sangat membantu dalam menjaga koneksi SSH.

Kemampuan untuk memasukkan perintah tanpa menunggu respon server diselesaikan oleh Mosh, namun kompatibilitas utilitas ini masih sangat terbatas dan keandalannya rendah, sehingga tidak disarankan untuk menggunakannya untuk saat ini.

Cara Melakukan Operasi Kritis dan Memakan Waktu di Server: Terminal Multiplexer

Jika Anda memperbarui OS, menginstal beberapa perangkat lunak, atau sekadar mengedit file di server, jangan langsung bekerja setelah terhubung melalui ssh atau autossh. Jika koneksi SSH ditutup, Anda akan kehilangan sesi yang dimulai saat menghubungkan melalui SSH. Untuk mencegah hal ini terjadi dan ketika menyambung kembali melalui SSH Anda pasti akan berakhir dalam operasi yang sedang berlangsung di server atau di jendela pengeditan file yang terbuka pada saat yang sama, gunakan terminal multiplexer di server: GNU Screen atau tmux.
Layar GNU
Program layar awalnya dibuat untuk menjalankan beberapa sesi terminal dalam satu terminal. Namun, layar juga memiliki properti lain yang berguna: kemampuan untuk memutuskan sambungan sesi virtual dari terminal fisik dan menyambung ke terminal lain. Hal ini, khususnya, memungkinkan Anda menjalankan proses yang berjalan lama pada mesin jarak jauh, tanpa perlu terus-menerus masuk ke mesin tersebut.

1. Masuk ke server jarak jauh melalui SSH.
2. Jalankan layar di sana
3. Anda akan melihat pesan selamat datang, tekan Enter.
4. Sekarang Anda dapat melakukan apa saja seolah-olah Anda baru saja terhubung ke server melalui SSH (misalnya, menjalankan proses yang sudah berjalan lama).
5. Anda dapat melepaskan sesi dengan menekan CTRL + a lalu d. Anda bahkan dapat menyelesaikan koneksi SSH ke server.
6. Untuk kembali ke sesi, sambungkan kembali melalui SSH (atau autossh akan melakukannya) dan masukkan screen -r
Anda akan kembali ke sesi berjalan, dan di dalamnya proses yang Anda mulai sebelumnya berlanjut. Kami akan melihat terminal multiplexer secara lebih rinci di artikel berikutnya.

Kesimpulan

Pada artikel ini, kami mencoba membahas dasar-dasar yang diperlukan untuk kenyamanan kerja melalui SSH dari berbagai sistem operasi. Tentu saja, ini bukanlah segalanya yang mungkin, namun ini merupakan dasar yang baik untuk memulai. Jika Anda menemukan kesalahan dalam artikel, menurut Anda ada sesuatu yang penting yang perlu ditambahkan, atau sekadar memiliki pertanyaan -
  • Sergei Savenkov

    semacam ulasan "pendek"... seolah-olah mereka sedang terburu-buru di suatu tempat