Bagaimana saya dapat membantu seseorang (seperti nenek-nenek) dalam SSH yang berada di belakang router NAT?

14

Untuk membantu orang lain dengan cepat, SSH sangat berguna, terutama dikombinasikan dengan Layar GNU. Sudah umum bahwa pengguna berada di belakang router NAT. Bahkan jika pengguna dapat mengkonfigurasi router, perlu waktu untuk mengingat kata sandi, menemukan opsi yang tepat, dll.

Jadi, apa cara termudah untuk membantu orang lain melebihi SSH jika mereka berada di belakang router NAT?

Saat ini saya memberi tahu orang-orang untuk membuka terminal, jalankan perintah di bawah ini dan berikan saya IP mereka dari situs seperti http://ip.appspot.com/ :

sudo apt-get install openssh-server ssh-import-id && ssh-import-id lekensteyn

Jelas, ini tidak akan berfungsi jika mereka berada di belakang router NAT atau memiliki firewall pribadi yang dikonfigurasi. Jadi, apakah ada sesuatu seperti:

sshd --accept-help-from lekensteyn

Saya tidak mencari alternatif seperti Teamviewer, hanya shell seperti SSH. Itu juga harus open-source.

Lekensteyn
sumber

Jawaban:

13

Jika komputer Anda sendiri dapat menerima koneksi SSH, ada cara untuk menggunakan teknik yang dihubungkan Pavlos G. tanpa komputer tambahan.

Pertama-tama Anda membutuhkan pengguna yang kurang mampu * yang akan disambungkan teman Anda sebagai:

sudo adduser reverse --shell /bin/false

Beri tahu teman Anda untuk memulai terowongan:

ssh -N -R 62222:localhost:22 reverse@lekensteyns-server

Kemudian, di komputer Anda sendiri ( lekensteyns-server), mulai koneksi mundur:

ssh -p 62222 localhost

* Saya tidak cukup tahu tentang keamanan untuk dapat memberi saran tentang cara membuat pengguna yang kurang beruntung. Itu mungkin sesuatu yang harus dibahas dalam pertanyaan terpisah.

ændrük
sumber
3
Tampak menjanjikan, saya telah mengajukan pertanyaan baru tentang bagian pengguna yang dibatasi itu
Lekensteyn
2

Berdasarkan kebutuhan spesifik Anda, saya mungkin akan:

  1. Minta mereka untuk memberi tahu saya kata sandi router
  2. Masuk dan siapkan penerusan port untuk port 22 saja
  3. Hubungkan melalui SSH (atau tunneling SSH jika Anda perlu membuka port tambahan) dan menyelesaikan pekerjaan.

Saya juga lupa bahwa Anda dapat mencoba terowongan ssh terbalik , meskipun solusi ini secara teknis membutuhkan satu lagi - komputer tengah untuk bekerja.

Info lebih lanjut dapat ditemukan di sini

Pavlos G.
sumber
1) mungkin tidak akan berfungsi karena akses router sering dilarang untuk umum.
Lekensteyn
2

Saya biasanya hanya mengatur terowongan IPv6 (dari sixxs.net atau he.net) jika mereka belum memiliki IPv6 dan kemudian dengan cara itu komputer memiliki alamat statis dan saya tidak perlu mengacaukan dengan NAT. Saya juga suka mengatur otentikasi berbasis kunci (maka mereka tidak perlu memberi tahu Anda kata sandi mereka).

Sixxs memiliki klien sendiri yang Anda gunakan. Ia bekerja di belakang hampir semua NAT, dan secara otomatis memperbarui ketika alamat IPv4 berubah. Mereka memiliki instruksi tentang cara mengaturnya dan itu dikemas untuk Ubuntu.

Hurricane Electric menggunakan terowongan di mana paket IPv6 dikirim sebagai muatan paket IPv4. Tidak seperti Sixxs, tidak ada TCP / UDP yang digunakan. Ini berarti bahwa NAT Anda di belakang harus mendukung penerusan PROTOCOL 41 (bukan port) dan hanya satu komputer di belakang NAT yang dapat menggunakannya. Perangkat lunak untuk menggunakan terowongan seperti ini dibangun di Ubuntu.

Untuk DIA, saya menggunakan sesuatu seperti ini di /etc/network/interfaces:

auto he-ipv6
iface he-ipv6 inet6 v4tunnel
     endpoint 216.218.226.238
     address  2001:470:a29f::2
     netmask  64
     ttl 64
     up ip -6 route add default dev he-ipv6
     down ip -6 route del default dev he-ipv6

Hal lain yang perlu Anda lakukan adalah memperbarui titik akhir terowongan Anda. Karena Anda tidak tahu kapan IP Eksternal berubah, Anda harus mencoba memperbarui titik akhir setiap beberapa menit. Anda bisa menggunakan sesuatu seperti ini dan menjalankannya dari cron:

#!/bin/sh
echo -n "Hurricane Electric Proto-41 tunnel endpoint update: "
#(C) 2010 Erik B. Andersen This script is licensed under the latest version of the
# AGPL published by the Free Software Foundation at http://www.gnu.org/licenses/ .
####Set these for each different site#########
pass="passwordhere"
user_id="a765b8e2f474667dcb56e08c5f1aa05b"
tunnel_id="97817"
####Past here doesn't need to be changed######
wget -4 "https://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=AUTO&pass=$(echo -n "${pass}" | md5sum | grep -o -E "[0-9a-fA-F]{32}")&user_id=${user_id}&tunnel_id=${tunnel_id}" -O /dev/null -o /dev/null --no-check-certificate
echo " Done"
Azendale
sumber
1
Upaya apa yang perlu dilakukan untuk mengatur terowongan seperti itu dengan benar? Koneksi ini tentu saja berbasis kunci, itu sebabnya saya menggunakan ssh-import-id
Lekensteyn
Memang, saya ingin belajar lebih banyak tentang trik ini.
Rafał Cieślak
0

Selama bertahun-tahun, saya mengembangkan GUI untuk melakukan persis apa yang diminta OP ... kecuali bahwa ia memerlukan akses ssh ke server ketiga dengan IP publik, seperti yang disarankan oleh Pavlos. Anda dapat menemukan paket debian di sini dan instruksinya:

http://pietrobattiston.it/reachme

Perhatikan itu (masih) tidak dapat mengurus konfigurasi awal - yaitu, Anda harus mengatur sendiri kunci rsa untuk koneksi tanpa kata sandi. Setelah diatur, "reachthem" memungkinkan Anda untuk melihat apakah "reachme" terhubung, dan untuk membuka shell ssh / menelusuri sistem file / melihat layar (eksperimental).

Jelas, Anda tidak perlu komputer ketiga jika komputer Anda sendiri memiliki IP publik, seperti dalam jawaban oleh ændrük. Dan jelas, manfaat GUI adalah bahwa pengguna jarak jauh tidak harus memasukkan perintah apa pun di terminal ... tetapi bagian dari manfaat ini hilang jika pengguna jarak jauh harus menginstal reachme. Jadi saya selalu menginstal dan mengatur reachme untuk semua orang yang saya instal Ubuntu.

Pietro Battiston
sumber