Ya, menggunakan ProxyCommand
konfigurasi SSH Anda.
Buat file konfigurasi SSH di direktori home Anda (kecuali jika Anda ingin membuat seluruh sistem), ~/.ssh/config
:
Host unibroker # Machine B definition (the broker)
Hostname 12.34.45.56 # Change this IP address to the address of the broker
User myusername # Change this default user accordingly
# (`user@unibroker` can overwrite it)
Host internalmachine # Machine A definition (the target host)
ProxyCommand ssh -q unibroker nc -q0 hostname.or.IP.address.internal.machine 22
Sekarang Anda dapat mencapai Mesin A secara langsung menggunakan
ssh user@internalmachine
Perhatikan juga bahwa sekarang Anda memiliki satu nama target host SSH untuk itu, Anda dapat menggunakan ini di aplikasi lain juga. Misalnya:
SCP untuk menyalin file.
scp somefile user@internalmachine:~/
Dalam aplikasi GUI Anda:
gunakan sftp://user@internalmachine/
sebagai lokasi untuk menelusuri di mesin.
Berbasis KDE (Lumba-lumba): gunakan fish://user@internalmachine/
Catatan
Ubah hostname.or.IP.address.internal.machine
dan port ( 22
) ke mesin yang ingin Anda jangkau seolah-olah Anda ingin dari unibroker
mesin.
Bergantung pada versi netcat pada host unibroker, -q0
opsi harus dihilangkan. Mengenai otentikasi; Anda pada dasarnya mengatur dua koneksi SSH dari workstation Anda. Ini berarti host unibroker dan host mesin internal diverifikasi / diautentikasi satu demi satu (untuk keypair / kata sandi dan verifikasi kunci host).
Penjelasan
Pendekatan penggunaan ProxyCommand
dan 'netcat' ini hanyalah salah satu cara untuk melakukannya. Saya suka ini, karena klien SSH saya berbicara langsung ke mesin target sehingga saya dapat memverifikasi kunci host dari klien saya dan saya dapat menggunakan otentikasi kunci publik saya tanpa menggunakan kunci lain pada broker.
Masing-masing Host
mendefinisikan awal bagian host baru. Hostname
adalah nama host target atau alamat IP dari host itu. User
adalah apa yang akan Anda berikan sebagai bagian pengguna ssh user@hostname
.
ProxyCommand
akan digunakan sebagai pipa ke mesin target. Dengan menggunakan SSH ke mesin pertama dan secara langsung membuat 'netcat' ( nc
) sederhana ke target dari sana, ini pada dasarnya hanya plaintext maju ke mesin internal dari broker di antara mereka. The -q
opsi untuk membungkam setiap keluaran (hanya preferensi pribadi).
Pastikan Anda menginstal netcat di broker (biasanya tersedia secara default di Ubuntu) - baik netcat-openbsd atau netcat-traditional .
Perhatikan bahwa Anda masih menggunakan SSH dengan enkripsi dua kali di sini. Sementara saluran netcat adalah teks biasa, klien SSH Anda pada PC Anda akan mengatur saluran terenkripsi lainnya dengan mesin target akhir.