Terowongan SSH melalui server perantara - bagaimana cara terhubung dalam satu langkah (menggunakan pasangan kunci)?

9

Pertanyaan saya pada dasarnya adalah bagaimana mengubah dua langkah saya yang ada menjadi satu langkah.

Saya memiliki terowongan SSH yang berfungsi mengatur antara dua komputer menggunakan server perantara seperti ini:

Kubuntu_laptop--->nat_fw--->Debian_Server<--nat_fw<--Kubuntu_desktop

Apa yang saya lakukan saat ini adalah SSH dari Kubuntu_laptop ke Debian_Server dan kemudian dari Debian_Server ke Kubuntu_desktop. Saya ingin membuat satu perintah SSH yang dikeluarkan pada Kubuntu_laptop saya di bash yang menghasilkan saya terhubung ke Kubuntu_desktop (shell / bash).

Perintah yang saya gunakan sekarang adalah sebagai berikut. Langkah 1:

me@kubuntu_laptop:~$ ssh -i ~/.ssh/id_rsa admin@debian_server  

Langkah 2:

admin@debian_server:$ ssh -p 1234 -i /home/admin/.ssh/id_rsa admin@localhost 

Kemudian saya terhubung ke kubuntu_desktop melalui SSH (dari kubuntu_laptop).

Kunci RSA diperlukan untuk semua koneksi SSH. Login kata sandi dinonaktifkan sepanjang jalan. Dan perhatikan bahwa akun pengguna komputer berbeda di dua komputer.

Mengenai koneksi untuk leg ini:

Debian_Server<--nat_fw<--Kubuntu_desktop

Beginilah cara didirikan:

autossh -M 5234 -N -f -R 1234:localhost:22 user@mydebian.com -p 22

Perhatikan Kubuntu_desktop terhubung ke perantara sebagai [email protected] (bukan admin @ debian_server). Tetapi ketika saya terhubung ke Kubuntu_desktop, saya terhubung sebagai pengguna admin.

Saya tidak dapat mengubah port pemantauan yang ada (5234) atau nomor port jarak jauh (- R) (1234 dalam contoh ini). Saya tidak dapat mengubah keamanan SSH untuk mengizinkan login kata sandi. Saya tidak bisa membuka port firewall baru. Saya tidak dapat mengubah akun pengguna (kecuali pada laptop).

MountainX
sumber
Lihatlah pertanyaan ini: unix.stackexchange.com/questions/82158/…
Hauke ​​Laging
@ HaukeLaging - sepertinya menarik tapi saya tidak memahaminya. Apa itu "nc"? Dan di mesin mana ~ / .ssh / config diedit? Pada dasarnya, saya perlu lebih detail daripada yang diberikan pertanyaan / jawaban. Terima kasih.
MountainX
Pertanyaan ini telah di-crosspost (tanpa pemberitahuan) ke Server Fault SE. Ini bentuk yang sangat buruk!
mdpc
terima kasih untuk downvotes di mana-mana, tetapi apa yang salah dengan bertanya di dua tempat yang berbeda? Apakah Anda juga akan mencegah saya bertanya di ubuntuforums.org atau di tempat lain?
MountainX
@ HaukeLaging-Jika menggunakan ProxyCommand di laptop saya ~ / .ssh / config, apa yang saya masukkan untuk Hostname dari Kubuntu_Desktop? Tidak ada fqdn. Ini adalah SSH terbalik. Terima kasih.
MountainX

Jawaban:

8

Pastikan netcat diinstal pada server Debian, dan gunakan ProxyCommanddalam konfigurasi SSH lokal Anda ( ~/.ssh/config).

Host Kubuntu_desktop
  ProxyCommand ssh Debian_Server nc localhost 1234
Ignacio Vazquez-Abrams
sumber
Saya memberikan semua langkah saya dalam jawaban lain untuk kelengkapan, tapi itu semua berkat bantuan Anda. Saya menerima jawaban Anda. Terima kasih!!!
MountainX
6

Berkat @Ignacio Vazquez-Abrams berikut ini semua langkah-langkahnya:

Pastikan netcat diinstal pada server Debian, dan gunakan ProxyCommand di konfigurasi SSH lokal Anda (~ / .ssh / config).

Saya mengedit konfigurasi sebagai berikut:

me@kubuntu_laptop:~/.ssh$ nano config

Isinya adalah:

Host kubuntu_desktop
  ProxyCommand ssh debian_server_fqdn nc localhost 1234
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

Kemudian hubungkan saja:

me@kubuntu_laptop:~$ ssh kubuntu_desktop

Terhubung ke kubuntu_desktop via SSH dalam 1 langkah! Sempurna

Memperbarui:

Ini membuatnya lebih fleksibel:

me@kubuntu_laptop:~/.ssh$ nano config

Konten baru adalah:

Host family_desktops
  ProxyCommand ssh debian_server_fqdn nc localhost %p
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

Kemudian, sambungkan saja ke Ibu:

me@kubuntu_laptop:~$ ssh family_desktops -p 1234

Dan terhubung ke Ayah:

me@kubuntu_laptop:~$ ssh family_desktops -p 5678

Tentu saja, Mom & Dad harus mengatur Langkah 0 (dari pertanyaan awal saya) di mana masing-masing memiliki port -R sendiri. Contoh untuk Ayah:

Langkah 0 (untuk Ayah):

autossh -M 6543 -N -f -R 5678:localhost:22 user@mydebian.com -p 22

Pilihan:

DAD=5678
ssh family_desktops -p $DAD
MountainX
sumber
ProxyCommand juga dapat ditulis sebagai: ProxyCommand ssh debian_server_fqdn -W localhost:%pjadi tidak perlu memiliki netcat di server Debian.
Kevin