GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara meneruskan ssh dengan AllowTcpForwarding diatur ke no?

Selama seseorang dapat mengeksekusi socat secara lokal dan pada gateway (atau bahkan hanya bash dan cat pada gateway , lihat contoh terakhir!) dan diperbolehkan untuk tidak gunakan pty agar 8bits bersih, dimungkinkan untuk membuat terowongan melalui ssh. Berikut adalah 4 contoh, menyempurnakan sebelumnya:

Contoh dasar berfungsi sekali

(memiliki garpu akan membutuhkan satu koneksi ssh per terowongan, tidak bagus). Harus keluar dari : agar socat menerima perintah exec:

istilah1:

$ socat tcp-listen:12345,reuseaddr exec:'ssh [email protected] exec socat - tcp\:devbox\:22',nofork

istilah2:

$ ssh -p 12345 [email protected]

istilah1:

[email protected]'s password:

istilah2:

[email protected]'s password: 

Membalikkan alamat pertama dan kedua membuat soket segera tersedia

socat harus tetap bertanggung jawab, jadi tidak ada nofork :

istilah1:

    $ socat exec:'ssh [email protected] exec socat - tcp\:devbox\:22' tcp-listen:12345,reuseaddr
    [email protected]'s password:

istilah2:

    $ ssh -p 12345 [email protected]
    [email protected]'s password:

Menggunakan ControlMaster ssh

memungkinkan untuk melakukan fork saat hanya menggunakan satu koneksi ssh ke gateway, sehingga memberikan perilaku yang mirip dengan penerusan port biasa:

istilah1:

    $ ssh -N -o ControlMaster=yes -o ControlPath=~/mysshcontrolsocket [email protected]
    [email protected]'s password:

istilah2:

    $ socat tcp-listen:12345,reuseaddr,fork exec:'ssh -o ControlPath=~/mysshcontrolsocket [email protected] exec socat - tcp\:devbox\:22'

istilah3:

    $ ssh -p 12345 [email protected]
    [email protected]'s password:

Hanya memiliki bash dan cat tersedia di gateway

Dengan menggunakan bash pengalihan tcp bawaan, dan dua cat setengah dupleks perintah (untuk hasil dupleks penuh) seseorang bahkan tidak memerlukan socat jarak jauh atau netcat . Penanganan beberapa lapisan tanda kutip bersarang dan lolos agak canggung dan mungkin dapat dilakukan dengan lebih baik, atau disederhanakan dengan menggunakan bash jarak jauh naskah. Kehati-hatian harus diambil untuk memiliki cat bercabang untuk keluaran saja:

term1 (tidak ada perubahan):

$ ssh -N -o ControlMaster=yes -o ControlPath=~/mysshcontrolsocket [email protected]
[email protected]'s password:

istilah2:

$ socat tcp-listen:12345,reuseaddr,fork 'exec:ssh -T -o ControlPath=~/mysshcontrolsocket [email protected] '\''exec bash -c \'\''"exec 2>/dev/null 8<>/dev/tcp/devbox/22; cat <&8 & cat >&8"\'\'\'

istilah3:

$ ssh -p 12345 [email protected]
[email protected]'s password:

Ganti ProxyJump dengan Bash

Ide di atas bagus! Ini adalah versi ssh_config generik saya saat ProxyJump tidak berfungsi karena AllowTcpForwarding setel ke no dan shell default saya adalah BASH:

ProxyCommand=ssh -T [email protected] "exec 3<>/dev/tcp/%h/%p 2<&- ; cat <&3 & cat >&3 ; kill $!"
  • -T Nonaktifkan alokasi terminal semu
  • eksekusi Tidak ada proses baru (bash) yang akan dibuat
  • 3<> hanyalah pengalihan ke deskriptor file yang tersedia
  • /dev/tcp/... akan meminta bash untuk membuka soket TCP yang sesuai.
  • %h dan %p akan dievaluasi oleh klien OpenSSH Anda sebagai devbox dan 22
  • 2<&- akan menutup STDERR (Anda juga dapat mengalihkannya ke /dev/null)
  • kucing <&3 & akan membaca deskriptor file 3 yang dipilih di latar belakang
  • kucing>&3 akan menulis deskriptor file kami di latar depan
  • bunuh $! akan mematikan "pembacaan" kucing <&3 perintah berjalan di latar belakang saat Anda menutup/memutus koneksi. Kalau tidak, itu akan terus berjalan.

Itu bisa menggantikan ProxyJump untuk saya dalam situasi ketika dinonaktifkan di server lompat, tetapi saya benar-benar tidak ingin meneruskan kunci pribadi saya di sana atau memasukkan kata sandi apa pun tanpa tingkat enkripsi tambahan. Menggunakan SSH_AUTH_SOCK orang lain sebagai root atau merekam sesi terminal sepenuhnya dengan menekan tombol adalah hal yang nyata.

Tapi tolong, selalu pastikan Anda tidak melanggar kebijakan apa pun yang berlaku untuk Anda!


Linux
  1. SSH ke Port Selain 22:Bagaimana Melakukannya (dengan Contoh)

  2. Cara Mengatur Kunci SSH

  3. Cara Menonaktifkan Login SSH Dengan Kata Sandi

  1. Cara Mengatur Tunneling SSH

  2. Cara Mengatur Kunci SSH di Ubuntu 18.04

  3. Cara Mengatur Kunci SSH di Debian

  1. Bagaimana Cara Mengatur Tanggal Dengan Format Epoch?

  2. Cara mengatur Penerusan Web

  3. Cara:Memulai dengan Ansible