Terowongan SSH untuk Samba melalui SSH Proxy

2

Jadi saya mencoba melakukan sesuatu itu relatif hanya secara teori tetapi kasus penggunaan saya tampaknya sulit ditemukan karena kebanyakan proksi Saya menemukan di internet dalam hal mengatur proxy untuk browser Anda melalui terowongan SSH.

Yang ingin saya lakukan adalah mengatur drive yang dipetakan pada Mac saya yang menunjuk ke kotak linux yang saya miliki akses SSH. Saya telah menemukan beberapa sumber daya online yang bermanfaat termasuk ini di mana penulis merekomendasikan sesuatu seperti:

sudo ifconfig lo0 127.0.0.2 alias up
sudo ssh -NL 127.0.0.2:139:localhost:139 \
         -NL 127.0.0.2:445:localhost:445 \
         user@ssh-host

Dari apa yang saya mengerti, itu terlihat baiklah ... Namun, pengaturan saya hanya sedikit lebih rumit. Ini mengasumsikan bahwa Anda memiliki akses SSH langsung ke kotak. Situasi saya sedemikian rupa sehingga saya terhubung ke mesin saya melalui komputer lain. Jadi, konfigurasi ~ / .ssh / config saya seperti berikut:

Host *.dev
  User jmurray
  IdentityFile ~/.ssh/my_dev_identity_file
  ProxyCommand ssh -A proxy_box nc %h %p

Jadi, ketika saya ssh ke jmurray.dev (kotak target linux), saya akan diarahkan melalui proxy_box server. Saya harus menyebutkan bahwa konfigurasi jaringan ini di luar kendali saya, jadi tolong jangan menyarankan perubahan pada konfigurasi jaringan itu sendiri.

Jadi, dari tutorial yang disebutkan di atas, perintah pertama berfungsi dengan baik (tentu saja) tetapi perintah kedua:

sudo ssh -NL 127.0.0.2:139:localhost:139 \
         -NL 127.0.0.2:445:localhost:445 \
         [email protected]

kesalahan dengan:

sh: Could not resolve hostname jmurray.dev: nodename nor servname provided, or not known

Jadi, saya hanya berasumsi di sini bahwa itu tidak membaca file konfigurasi saya ketika saya membuat permintaan ini. Jadi, saya memutuskan bahwa saya akan memberinya konfigurasi saya melalui baris perintah dengan versi yang sedikit dimodifikasi:

sudo ssh -NL 127.0.0.2:139:localhost:139 \
         -NL 127.0.0.2:445:localhost:445 \
         [email protected] \
         -o 'User jmurray' \
         -o 'IdentityFile ~/.ssh/my_dev_identity_file' \
         -o 'ProxyCommand ssh -A proxy_box nc %h %p'

tapi kemudian saya mendapatkan kesalahan terpisah:

Permission denied (publickey,gssapi-with-mic).
ssh_exchange_identification: Connection closed by remote host

Jadi ... Di sinilah saya terjebak. Saya merasa seperti ini seharusnya mungkin. Jika saya dapat ssh ke dalam kotak sekaligus perintah dari mesin lokal saya, maka saya merasa seperti itu mungkin untuk mengatur terowongan saya dalam satu perintah dari mesin lokal saya. Dan sejak itu proxy_box adalah mesin yang dibagikan, saya benar-benar ingin menjauh dari solusi apa pun yang mengharuskan saya untuk bertindak sebagai root pada kotak itu.

Terima kasih sebelumnya atas bantuannya !! Itu sangat dihargai!

John
sumber

Jawaban:

2

Lari ssh dengan sudo berarti Anda menjalankannya sebagai root, maka itu tidak menggunakan .ssh / config Anda tetapi root.

Jalankan koneksi ssh Anda pada port unprivileged saat Anda dan kemudian jalankan koneksi proxy SSH tambahan localhost untuk meneruskan port yang diistimewakan.

Ok, jadi sebagai contoh, tambahan untuk melakukan SSH normal Anda:

ssh -NL 127.0.0.2:10139:localhost:139 \
    -NL 127.0.0.2:10445:localhost:445 \
     user@ssh-host

Anda juga menjalankan ssh lokal ini:

sudo ssh -NL 127.0.0.2:139:127.0.0.2:10139 \
         -NL 127.0.0.2:445:127.0.0.2:10445 \
         $USER@localhost

Dengan demikian Anda menghindari pengikatan ke port istimewa 139 dan 445 di koneksi SSH Anda yang sebenarnya dan hanya mengikatnya di koneksi lokal ke mesin Anda sendiri.

Namun, semua ini tampaknya sedikit upaya untuk hanya mengakses file, harus ada pilihan yang baik dari implementasi SSHFS / SFTP untuk Mac yang tersedia.

Stefan Seidel
sumber
Saya masih bergulat dengan konsep dan sintaks port-forwarding di SSH. Bisakah Anda memberi saya contoh dalam jawaban Anda? Itu akan luar biasa! Dan saya akan senang menerimanya sebagai jawaban untuk pertanyaan saya!
John