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.