youatwork@officepc$ autossh -R 12345:localhost:22 notroot@serverpc
Kemudian:
you@homepc$ autossh -L 23456:localhost:12345 notroot@serverpc
you@homepc$ ssh youatwork@localhost -p 23456
Apa yang dapat Anda lakukan adalah ini: pada langkah 1 meneruskan port jarak jauh dari PC kantor ke server ( 12345
digunakan sebagai contoh, port apa pun> 1024 yang harus dilakukan). Sekarang terhubung ke 12345 di server akan menghubungkan Anda ke port 22 di officepc.
Pada langkah 2, teruskan port 23456 dari mesin di rumah Anda ke 12345 di server (saat itu diteruskan ke officepc: 22, sebagaimana diatur dalam langkah 1)
Pada langkah 3, Anda terhubung ke port lokal 23456 dengan login PC kantor Anda . Ini diteruskan oleh langkah 2 ke port 12345 di server Anda, dan dengan langkah 1 ke PC kantor Anda.
Perhatikan bahwa saya menggunakan autossh untuk penerusan, karena ini adalah pembungkus ssh yang secara otomatis menghubungkan kembali terowongan jika harus diputus; Namun ssh normal akan berfungsi juga, selama koneksi tidak turun.
Ada kemungkinan kerentanan: siapa pun yang dapat terhubung ke localhost: 12345 di serverpc sekarang dapat terhubung ke officepc: 22, dan mencoba untuk meretas ke dalamnya. (Perhatikan bahwa jika Anda menjalankan server SSH, Anda harus tetap mengamankannya di atas perlindungan dasar yang aktif secara default; Saya sarankan setidaknya menonaktifkan login root dan menonaktifkan otentikasi kata sandi - lihat misalnya ini )
Sunting : Saya telah memverifikasi ini dengan konfigurasi yang sama, dan berfungsi. GatewayPorts no
hanya memengaruhi porta yang terbuka untuk dunia pada umumnya, bukan terowongan lokal. Inilah port yang diteruskan:
homepc:
outgoing ssh to serverpc:22
listening localhost:23456 forwarded through ssh tunnel
serverpc:
listening ssh at *:22
incoming localhost ssh tunnel (from homepc) forwarded to localhost:12345
listening localhost ssh tunnel (from officepc) forwarded from localhost:12345
officepc:
outgoing ssh to serverpc:22
incoming localhost through ssh tunnel (from serverpc) forwarded to localhost:22
Jadi, sejauh menyangkut tumpukan jaringan, itu semua lalu lintas lokal pada antarmuka loopback masing-masing (ditambah koneksi ssh ke serverpc); oleh karena itu, GatewayPorts
tidak dicentang sama sekali.
Akan tetapi, ada arahannya AllowTcpForwarding
: jika demikian no
, pengaturan ini akan gagal karena tidak ada penerusan yang diizinkan sama sekali, bahkan tidak melintasi antarmuka loopback.
Peringatan :
Jika menggunakan autossh dan ssh terbaru, Anda mungkin ingin menggunakan ssh ServerAliveInterval
dan ServerAliveCountMax
untuk menjaga terowongan. Autossh memiliki cek bawaan, tetapi ternyata ada beberapa masalah pada Fedora. -M0
menonaktifkannya, dan -oServerAliveInterval=20 -oServerAliveCountMax=3
memeriksa apakah koneksi sudah aktif - mencoba setiap 20 detik, jika gagal 3x berturut-turut, berhenti ssh (dan autossh membuat yang baru):
autossh -M0 -R 12345:localhost:22 -oServerAliveInterval=20 -oServerAliveCountMax=3 notroot@serverpc
autossh -M0 -L 23456:localhost:12345 -oServerAliveInterval=20 -oServerAliveCountMax=3 notroot@serverpc
mungkin berguna untuk memulai kembali ssh tunnel jika penerusan gagal, menggunakan -oExitOnForwardFailure=yes
- jika port sudah terikat, Anda mungkin mendapatkan koneksi SSH yang berfungsi, tetapi tidak ada penerusan terowongan.
~/.ssh/config
disarankan menggunakan opsi (dan port), jika tidak, baris perintah terlalu bertele-tele. Sebagai contoh:
Host fwdserverpc
Hostname serverpc
User notroot
ServerAliveInterval 20
ServerAliveCountMax 3
ExitOnForwardFailure yes
LocalForward 23456 localhost:12345
Kemudian Anda dapat menggunakan hanya alias server:
autossh -M0 fwdserverpc