SSH: tunnel tanpa shell di ssh server

63

Saya harus membuat terowongan antara dua host.

Untuk ini saya gunakan sshdengan cara ini:

ssh -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT MYUSER@SSH_SERVER

setelah itu, saya masuk ke SSH_SERVER saya.

Bagaimana saya bisa menghindari fitur ini ?! Saya hanya perlu membuat terowongan. Saya tidak harus masuk ke SSH_SERVER saya ...

Saya sudah mencoba opsi -N, tetapi itu membuat shell saya sibuk.

Bau Miao
sumber
SSH -N -L xx: xx: xx user @ server & <- sudahkah Anda mencobanya sebelumnya?
Lawrence
Hei, kamu benar. Saya sudah mencoba host lain dan opsi -N berfungsi. Jadi saya telah menemukan bahwa masalahnya ada pada klien ssh saya (saya tidak tahu mengapa, dan saya akan mencari alasannya). Terima kasih banyak!
Bau Miao
1
man sshmenunjukkan bagaimana: ssh -f -L 1234:localhost:6667 server.example.com sleep 10 && irc -c '#users' -p 1234 pinky 127.0.0.1 Opsi -f latar belakang ssh dan perintah remote `` sleep 10 '' ditentukan untuk memungkinkan sejumlah waktu (10 detik, dalam contoh) untuk memulai layanan yang akan disetel. Jika tidak ada koneksi yang dibuat dalam waktu yang ditentukan, ssh akan keluar. `` `
lionello

Jawaban:

71

Seperti yang dikatakan dalam posting lain, jika Anda tidak ingin prompt pada host jarak jauh, Anda harus menggunakan -Nopsi SSH. Tapi ini hanya membuat SSH tetap berjalan tanpa harus meminta, dan shell sibuk.

Anda hanya perlu menempatkan SSH'ing sebagai tugas latar belakang dengan &tanda:

ssh -N -L 8080:ww.xx.yy.zz:80 user@server &

Ini akan meluncurkan tunneling ssh di latar belakang. Tetapi beberapa pesan mungkin muncul, terutama ketika Anda mencoba terhubung ke port non-mendengarkan (jika apache server Anda tidak diluncurkan). Untuk menghindari pesan-pesan ini muncul di shell Anda saat melakukan hal-hal lain, Anda dapat mengarahkan STDOUT / STDERR ke kekosongan besar:

ssh -N -L 8080:ww.xx.yy.zz:80 user@server >/dev/null 2>&1 & 

Bersenang-senang dengan SSH.

Adrien M.
sumber
17
Anda juga dapat menggunakan opsi ssh -falih-alih &dan io pengalihan.
tkrennwa
49

-f -N adalah apa yang Anda cari:

ssh -f -N -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT MYUSER@SSH_SERVER
neu242
sumber
3
Setelah terowongan diatur, bagaimana Anda menutupnya dengan metode ini?
Magnetik
@magnetik Cari proses dengan psdan killitu
neu242
13
@magnetik dan @ neu242 lebih baik menggunakan "master socket" ssh -N -f -M -S /tmp/file-sock -L port:server:port_to user@...sehingga Anda dapat membunuh koneksi nanti dengan ssh -S /tmp/file -o exit user@....(atau membunuh). Dengan begitu, tidak perlu ps. Anda dapat memberitahu untuk secara otomatis membuat file itu di ~ / .ssh / config.
Metal3d
1
Maksud saya "control socket" dan bukan "master socket"
Metal3d
8
Seharusnya ssh -S /tmp/file-sock -O exit, bukan -o en.wikibooks.org/wiki/OpenSSH/Cookbook/…
fetsh