Solusi 1:
Masalah Anda adalah mengikat pendengar ke localhost:22; sudah ada sshd yang mendengarkan itu. Tunneling koneksi ssh melalui koneksi ssh sepenuhnya sah, dan saya melakukannya sepanjang waktu, tetapi Anda harus memilih port yang tidak digunakan untuk pendengar penerusan Anda.
Coba
me% ssh [email protected] -L 2201:192.168.25.100:22
lalu
me% ssh localhost -p 2201
Anda seharusnya berada di server B (kecuali ada sesuatu yang terikat dengan saya:2201, dalam hal ini, pilih port lain).
Solusi 2:
Anda tidak harus menggunakan penerusan port ssh untuk ssh ke komputer internal melalui proxy. Anda dapat menggunakan fitur ssh untuk mengeksekusi perintah di server pertama yang Anda sambungkan untuk melakukan ssh ke komputer ke-3.
ssh -t [email protected] ssh [email protected]
-t
opsi memaksa 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 Anda di file kunci yang diotorisasi di mesin B dan C, maka Anda dapat menggunakan -A
opsi untuk meneruskan koneksi agen autentikasi.
Solusi 3:
Pada OpenSSH 7.3 (akhir 2016) cara termudah adalah pengaturan ProxyJump. Di ~/.ssh/config
Anda :
Host B
ProxyJump A
Atau pada baris perintah, -J B
.
Solusi 4:
Saya menggunakan solusi yang berbeda. Saya menggunakan ProxyCommand
opsi (di sini di ~/.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 standar stdin/out. Metode ini memiliki kekurangan yaitu sebenarnya ada tiga koneksi ssh untuk mengautentikasi. Tetapi untuk terhubung ke host internal Anda cukup mengetik:
ssh myinsidehost2
...jadi Anda tidak perlu khawatir memilih IP apa pun untuk terowongan itu.
Solusi 5:
menurut halaman manual ssh, ProxyCommand adalah metode yang benar
sintaksnya adalah:
ProxyCommand ssh -W %h:%p [email protected] 2> /dev/null