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 [email protected]

kemudian di 100.100.100.100,

ssh [email protected]

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:

[email protected]

Saya sudah mencoba yang berikut ini:

ssh -L 22:localhost:22 [email protected]

tanpa keberhasilan

tom91136
sumber

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 [email protected] -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).

MadHatter mendukung Monica
sumber
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 [email protected]; 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 [email protected] ssh [email protected]

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.

Jeff Strunk
sumber
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.

liori
sumber
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
packeteer
sumber
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.

arantius
sumber