Saat ini saya menjalankan banyak:
sudo ssh -L PORT:IP:PORT root@IP
dengan IP adalah target mesin yang diamankan, dan PORT mewakili port yang saya teruskan.
Ini karena saya menggunakan banyak aplikasi yang tidak dapat saya akses tanpa penerusan ini. Setelah melakukan ini, saya dapat mengakses melalui localhost:PORT
.
Masalah utama terjadi sekarang karena saya sebenarnya memiliki 4 port ini yang harus saya teruskan.
Solusi saya adalah membuka 4 shell dan terus mencari sejarah saya ke belakang untuk mencari dengan tepat port mana yang perlu diteruskan dll, dan kemudian jalankan perintah ini - satu di setiap shell (harus mengisi kata sandi dll).
Kalau saja saya bisa melakukan sesuatu seperti:
sudo ssh -L PORT1+PORT2+PORT+3:IP:PORT+PORT2+PORT3 root@IP
maka itu akan sangat membantu.
Adakah cara untuk mempermudah melakukan ini?
sumber
Persis seperti yang dijawab NaN , Anda menentukan beberapa argumen -L. Saya melakukan ini sepanjang waktu. Berikut adalah contoh penerusan multi port:
Catatan : Ini sama seperti
-L localhost:8822:REMOTE_IP_1:22
jika Anda tidak menentukanlocalhost
.Sekarang dengan ini, Anda sekarang dapat (dari terminal lain) melakukan:
untuk disambungkan ke
REMOTE_IP_1
port22
dan serupa
untuk disambungkan ke
REMOTE_IP_2
port22
Tentu saja, tidak ada yang menghentikan Anda untuk memasukkan ini ke dalam skrip atau mengotomatiskannya jika Anda memiliki banyak host / port berbeda untuk diteruskan dan ke beberapa spesifik tertentu.
Semoga ini membantu.
sumber
By default, anyone (even on different machines) can connect to the specified port on the SSH client machine. However, this can be restricted to programs on the same host by supplying a bind address: ssh -L 127.0.0.1:80:intra.example.com:80 gw.example.com
@David ssh.com/ssh/tunneling/exampleAnda dapat menggunakan fungsi bash berikut (tambahkan saja ke Anda
~/.bashrc
):Contoh penggunaan:
sumber
-f
untuk berjalan di latar belakangBagi orang yang meneruskan beberapa port melalui host yang sama dapat mengatur sesuatu seperti ini di ~ / .ssh / config mereka
Host all-port-forwards Hostname 10.122.0.3 User username LocalForward PORT_1 IP:PORT_1 LocalForward PORT_2 IP:PORT_2 LocalForward PORT_3 IP:PORT_3 LocalForward PORT_4 IP:PORT_4
dan itu menjadi mudah
ssh all-port-forwards
.sumber
jbchichoko dan yuval telah memberikan solusi yang layak. Tetapi jawaban jbchichoko bukanlah jawaban yang fleksibel sebagai suatu fungsi, dan terowongan yang terbuka oleh jawaban yuval tidak dapat ditutup
ctrl+c
karena berjalan di latar belakang. Saya memberikan solusi saya di bawah ini untuk menyelesaikan kedua kekurangan tersebut:Mendefinisikan fungsi di
~/.bashrc
atau~/.zshrc
:Contoh menjalankan fungsi:
Hasil dari contoh ini:
Anda dapat mengakses
127.0.0.1:16000~16009
sama sepertihostname:6000~6009
sumber
Salah satu manfaat masuk ke server dengan penerusan port adalah memfasilitasi penggunaan Notebook Jupyter. Tautan ini memberikan deskripsi yang sangat baik tentang cara melakukannya. Di sini saya ingin melakukan beberapa ringkasan dan perluasan untuk kalian semua rujuk.
Situasi 1. Login dari mesin lokal bernama Host-A (misalnya laptop Anda sendiri) ke mesin kerja jarak jauh bernama Host-B.
Kemudian Anda dapat membuka browser dan memasukkan: http: // localhost: port_A / untuk melakukan pekerjaan Anda di Host-B, tetapi lihat di Host-A.
Situasi 2. Login dari mesin lokal bernama Host-A (misalnya laptop Anda sendiri) ke mesin login jarak jauh bernama Host-B dan dari sana login ke mesin kerja jarak jauh bernama Host-C. Ini biasanya terjadi pada sebagian besar server analitik di dalam universitas dan dapat dicapai dengan menggunakan dua server yang
ssh -L
terhubung-t
.Kemudian Anda dapat membuka browser dan masuk: http: // localhost: port_A / untuk melakukan pekerjaan Anda di Host-C, tetapi lihat di Host-A.
Situasi 3. Login dari mesin lokal bernama Host-A (misalnya laptop Anda sendiri) ke mesin login jarak jauh bernama Host-B dan dari sana login ke mesin kerja jarak jauh bernama Host-C dan akhirnya login ke mesin kerja jarak jauh Host- D. Ini biasanya tidak terjadi tetapi mungkin terjadi kapan saja. Ini merupakan perpanjangan dari Situasi 2 dan logika yang sama dapat diterapkan pada lebih banyak mesin.
Kemudian Anda dapat membuka browser dan masuk: http: // localhost: port_A / untuk melakukan pekerjaan Anda di Host-D, tetapi lihat di Host-A.
Perhatikan bahwa port_A, port_B, port_C, port_D dapat berupa nomor acak kecuali nomor port umum yang tercantum di sini . Dalam situasi 1, port_A dan port_B bisa sama untuk menyederhanakan prosedur.
sumber
Di perusahaan saya, saya dan anggota tim saya memerlukan akses ke 3 port dari server "target" yang tidak dapat dijangkau, jadi saya membuat terowongan permanen (yaitu terowongan yang dapat berjalan di latar belakang tanpa batas waktu, lihat parameter
-f
dan-N
) dari server yang dapat dijangkau ke target satu. Pada baris perintah dari server yang dapat dijangkau, saya mengeksekusi:Saya menggunakan pengguna
root
tetapi pengguna Anda sendiri akan berfungsi. Anda harus memasukkan kata sandi dari pengguna yang dipilih (bahkan jika Anda sudah terhubung ke server yang dapat dijangkau dengan pengguna tersebut).Sekarang port 8822 dari mesin yang dapat dijangkau sesuai dengan port 22 dari target satu (untuk ssh / PuTTY / WinSCP) dan port 9006 dan 9100 pada mesin yang dapat dijangkau sesuai dengan port yang sama dari satu target (mereka menghosting dua layanan web dalam kasus saya ).
sumber
Saya telah mengembangkan loco untuk mendapatkan bantuan dengan ssh forwarding. Ini dapat digunakan untuk berbagi port 5000 dan 7000 pada jarak jauh secara lokal di port yang sama:
sumber
Jika Anda menginginkan solusi sederhana yang berjalan di latar belakang dan mudah dimatikan - gunakan soket kontrol
sumber
Ini adalah solusi yang terinspirasi dari Yuval Atzmon.
Ini memiliki beberapa manfaat dibandingkan solusi awal:
Anda dapat menggunakannya sebagai:
Dan akhirnya bunuh mereka semua dengan
tnlkill
.sumber
Anda dapat menggunakan fungsi zsh ini (mungkin bekerja dengan bash juga) (Masukkan
~/.zshrc
):Contoh:
ashL [email protected] 6480 7690 7477
ashL [email protected] {6000..6050} # Forwards the whole range. This is simply shell syntax sugar.
sumber