Teruskan SSH melalui terowongan SSH


30

Situasi saya :

Saya (localhost) -> Server A (ip: 100.100.100.100) => (server B (ip: 192.168.25.100), server ....)

Saya dapat SSH ke server karena memiliki ip yang benar jika saya kemudian ingin terhubung ke server b, saya akan ssh server b dengan ip itu (192.168.25.100)

contoh:

dari pc saya:

ssh user@100.100.100.100

kemudian di 100.100.100.100,

ssh user@192.168.25.100

ini akan membawa saya ke server B dengan ssh

bagaimana jika saya ingin terhubung ke server b secara langsung? bagaimana saya bisa melakukan itu

contoh:

dari oc saya:

ssh@192.168.25.100

Saya sudah mencoba yang berikut ini:

ssh -L 22:localhost:22 user@100.100.100.100

tanpa keberhasilan

Jawaban:


30

Masalah Anda dalam mengikat pendengar ke localhost: 22; sudah ada sshd mendengarkan itu. Tunneling koneksi ssh melalui koneksi ssh benar-benar halal, dan saya selalu melakukannya, tetapi Anda harus memilih port yang tidak digunakan untuk pendengar forwarding Anda.

Mencoba

me% ssh user@100.100.100.100 -L 2201:192.168.25.100:22

kemudian

me% ssh localhost -p 2201

Anda harus berakhir di server B (kecuali sesuatu sudah terikat kepada saya: 2201, dalam hal ini, pilih port lain).


terima kasih atas balasan cepatnya! itu berhasil, bagaimana saya bisa meneruskan semua koneksi, bukan hanya ssh (22)?
tom91136

1
Itu VPN lengkap yang Anda cari, bukan hanya penerusan porta. Ada langganan tentang cara melakukan vpn-over-ssh di bodhizazen.net/Tutorials/VPN-Over-SSH , tetapi itu membutuhkan akses root jarak jauh melalui ssh pada A. Atau Anda bisa melihat ke OpenVPN atau solusi VPN lainnya, tetapi sekali lagi, Anda perlu hak istimewa pada A untuk membuat ini bekerja.
MadHatter mendukung Monica

terima kasih banyak, satu hal terakhir, bagaimana jika saya hanya ingin terhubung ke A?
tom91136

me% ssh user@100.100.100.100; Bukankah kita sudah membahasnya? atau maksud Anda "bagaimana jika saya ingin VPN full-blown ke A?", dalam hal ini jawaban saya berlaku.
MadHatter mendukung Monica

1
Untuk orang-orang yang menginginkan VPN melalui SSH, tidak memiliki akses root di server tetapi itu memiliki Python, coba sshuttle .
André Paramés

23

Anda tidak harus menggunakan ssh port forwarding untuk ssh ke komputer internal melalui proxy. Anda dapat menggunakan fitur ssh untuk menjalankan perintah pada server pertama yang Anda sambungkan untuk ssh ke komputer ke-3.

ssh -t user@100.100.100.100 ssh user@192.168.25.100

The -tpasukan pilihan ssh untuk mengalokasikan pseudo-tty sehingga Anda dapat menjalankan perintah interaktif.

Ini dapat bekerja dengan kunci ssh juga. Jika Anda memiliki kunci pribadi dan publik di mesin A dan kunci publik di file kunci yang diotorisasi pada mesin B dan C, maka Anda dapat menggunakan -Aopsi untuk meneruskan koneksi agen otentikasi.


10

Saya menggunakan solusi yang berbeda. Saya menggunakan ProxyCommandopsi (di sini ~/.ssh/config):

Host myinsidehost1 myinsidehost2 myinsidehost3
ProxyCommand ssh externalhost ssh %h sshd -i

Ini tidak mengatur terowongan port-to-port, melainkan terowongan ssh dengan menggunakan stdin / out standar. Metode ini memiliki kelemahan bahwa sebenarnya ada tiga koneksi ssh untuk diautentikasi. Tetapi untuk terhubung ke host internal Anda cukup ketik:

ssh myinsidehost2

... jadi Anda tidak perlu peduli untuk memilih IP apa pun untuk terowongan itu.


1
Ini adalah satu-satunya jenis susun SSH yang menurut saya berfungsi. Saya sudah mencoba corkscrewatau nc( netcat) tetapi tidak ada yang bekerja dengan mulus seperti ini.
Phuong Nguyen

7

menurut halaman manual ssh, ProxyCommand adalah metode yang benar

sintaksnya adalah:

ProxyCommand ssh -W %h:%p user@jumphost 2> /dev/null

Saya tidak yakin -Wopsi ada ketika pertanyaan ini dijawab. Tetapi dengan versi yang lebih baru dari klien ssh, saya setuju bahwa kombinasi ProxyCommanddan -Wadalah metode yang disukai. Mungkin menambahkan beberapa konteks yang menunjukkan bagaimana hal itu dapat digunakan pada baris perintah dan juga contoh bagian untuk .ssh/config.
kasperd

Adakah ide untuk menemukan info changelogs / versi yang memberitahu kita versi SSH mana yang memiliki -Wperintah dan mana yang tidak? Sedikit googling tidak menghasilkan jawaban dengan cepat untuk saya ...
dmh

-Wdiperkenalkan dengan OpenSSH 5.4, dirilis pada 2010. Jadi jawabannya adalah ya @kasperd
0xC0000022L

7

Pada OpenSSH 7.3 (akhir 2016) cara termudah adalah pengaturan ProxyJump . Di Anda ~/.ssh/config:

Host B
  ProxyJump A

Atau di baris perintah,, -J B.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.