GNU/Linux >> Belajar Linux >  >> Linux

SSH ke host jarak jauh melalui proxy atau bastion dengan ProxyJump

Konsep bastion host bukanlah hal baru dalam komputasi. Host Baston biasanya menghadap ke publik, sistem yang diperkeras yang berfungsi sebagai titik masuk ke sistem di belakang firewall atau lokasi terbatas lainnya, dan mereka sangat populer dengan munculnya komputasi awan.

ssh command memiliki cara mudah untuk memanfaatkan bastion host untuk terhubung ke remote host dengan satu perintah. Alih-alih melakukan SSH terlebih dahulu ke bastion host, lalu menggunakan ssh di bastion untuk terhubung ke remote host, ssh dapat membuat koneksi awal dan kedua sendiri dengan menggunakan ProxyJump .

ProxyJump

ProxyJump , atau -J flag, diperkenalkan di ssh versi 7.3. Untuk menggunakannya, tentukan bastion host yang akan disambungkan setelah -J bendera, ditambah host jarak jauh:

$ ssh -J <bastion-host> <remote-host>

Anda juga dapat menyetel nama pengguna dan port tertentu jika berbeda di antara host:

$ ssh -J user@<bastion:port> <user@remote:port>

ssh halaman man (atau manual) (man ssh ) mencatat bahwa beberapa nama host yang dipisahkan koma dapat ditentukan untuk melompati serangkaian host:

$ ssh -J <bastion1>,<bastion2> <remote>

Fitur ini berguna jika ada beberapa tingkat pemisahan antara bastion dan host jarak jauh terakhir. Misalnya, host benteng publik yang memberikan akses ke kumpulan host "tingkat web", yang di dalamnya mungkin dapat diakses grup "tingkat database" yang dilindungi lebih lanjut.

Host proxy hard-coding di ~/.ssh/config

-J flag memberikan fleksibilitas untuk dengan mudah menentukan proxy dan host jarak jauh sesuai kebutuhan, tetapi jika bastion host tertentu secara teratur digunakan untuk terhubung ke host jarak jauh tertentu, ProxyJump konfigurasi dapat diatur di ~/.ssh/config untuk secara otomatis membuat koneksi ke bastion dalam perjalanan ke host jarak jauh:

### The Bastion Host
Host bastion-host-nickname
  HostName bastion-hostname

### The Remote Host
Host remote-host-nickname
  HostName remote-hostname
  ProxyJump bastion-host-nickname

Menggunakan contoh konfigurasi di atas, ketika sebuah ssh koneksi dibuat seperti ini:

$ ssh remote-host-nickname

ssh perintah pertama membuat koneksi ke bastion host bastion-hostname (host direferensikan, dengan nama panggilan, di ProxyJump host jarak jauh pengaturan) sebelum menghubungkan ke host jarak jauh.

Alternatif:Meneruskan stdin dan stdout

ProxyJump adalah cara sederhana untuk menggunakan fitur yang ssh sudah lama memiliki: ProxyCommand . ProxyCommand bekerja dengan meneruskan standar masuk (stdin) dan standar keluar (stdout) dari mesin jarak jauh melalui host proxy atau bastion.

ProxyCommand itu sendiri adalah perintah khusus yang digunakan untuk menghubungkan ke server jauh—dalam kasus contoh sebelumnya, itu akan menjadi ssh manual perintah yang digunakan untuk menghubungkan ke bastion terlebih dahulu:

$ ssh -o ProxyCommand="ssh -W %h:%p bastion-host" remote-host

%h:%p argumen ke -W flag di atas menentukan untuk meneruskan standar masuk dan keluar ke host jarak jauh (%h ) dan port host jarak jauh (%p ).

ProxyCommand di ~/.ssh/config

Seperti ProxyJump , ProxyCommand dapat diatur di ~/.ssh/config file untuk host yang selalu menggunakan konfigurasi ini:

Host remote-host
  ProxyCommand ssh bastion-host -W %h:%p

Dengan pengaturan ini di ~/.ssh/config , ssh . apa saja koneksi ke host jarak jauh dilakukan dengan meneruskan stdin dan stdout melalui koneksi aman dari bastion-host .

ssh perintah adalah alat yang ampuh. Meskipun sebagian besar mungkin digunakan dalam bentuk yang paling sederhana, ssh user@hostname , ada lusinan kegunaan, dengan flag dan konfigurasi untuk membuat koneksi dari satu host ke host lainnya. Lihat ssh halaman manual (man ssh ) terkadang untuk menemukan semua opsi berbeda yang tersedia dengan program yang tampaknya sederhana ini.


Linux
  1. Bagaimana cara ssh melalui Host (jumpserver) untuk mencapai server lain

  2. Ssh – Salin File Kembali Ke Sistem Lokal Dengan Ssh?

  3. Ssh – Bagaimana Menghindari Ssh Meminta Izin?

  1. SSH - “IDENTIFIKASI HOST JAUH JAUH TELAH BERUBAH”

  2. periksa apakah file ada di host jarak jauh dengan ssh

  3. SSH dengan authorized_keys ke sistem Ubuntu dengan homedir terenkripsi?

  1. Bagaimana saya bisa menghindari verifikasi host SSH untuk host yang dikenal?

  2. Bagaimana saya bisa menggunakan SSH dengan proxy SOCKS 5?

  3. Koneksi SSH melalui Terowongan SSH Terbalik (Remote).