ฉันจะช่วยใครบางคน (เช่นย่า) เหนือ SSH ที่อยู่หลังเราเตอร์ NAT ได้อย่างไร


14

เพื่อช่วยเหลือผู้อื่นอย่างรวดเร็ว SSH นั้นมีประโยชน์มากโดยเฉพาะเมื่อรวมกับหน้าจอ GNU เป็นเรื่องปกติที่ผู้ใช้จะอยู่หลังเราเตอร์ NAT แม้ว่าผู้ใช้สามารถกำหนดค่าเราเตอร์ได้ แต่ก็ต้องใช้เวลาพอสมควรในการจดจำรหัสผ่านค้นหาตัวเลือกที่เหมาะสม ฯลฯ

ดังนั้นวิธีที่ง่ายที่สุดในการช่วยเหลือผู้อื่นบน SSH คือถ้าพวกเขาอยู่หลังเราเตอร์ NAT?

ฉันบอกให้คนเปิดเทอร์มินัลเรียกใช้คำสั่งด้านล่างและส่ง IP ของพวกเขาจากเว็บไซต์อย่างhttp://ip.appspot.com/ :

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

เห็นได้ชัดว่านี่จะไม่ทำงานหากพวกเขาอยู่หลังเราเตอร์ NAT หรือตั้งค่าไฟร์วอลล์ส่วนบุคคล ดังนั้นมีบางอย่างเช่น:

sshd --accept-help-from lekensteyn

ฉันไม่ได้มองหาทางเลือกอื่นเช่น Teamviewer เพียงเปลือกหอยเช่น SSH มันควรเป็นโอเพ่นซอร์สด้วย

คำตอบ:


13

หากคอมพิวเตอร์ของคุณสามารถยอมรับการเชื่อมต่อ SSH ได้มีวิธีใช้เทคนิคที่ Pavlos G. เชื่อมโยงด้วยโดยไม่ต้องใช้คอมพิวเตอร์พิเศษ

คุณต้องมีผู้ใช้ที่ด้อยโอกาส * ที่เพื่อนของคุณจะเชื่อมต่อด้วย:

sudo adduser reverse --shell /bin/false

บอกเพื่อนของคุณให้เริ่มอุโมงค์:

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

จากนั้นบนคอมพิวเตอร์ของคุณเอง ( lekensteyns-server) เริ่มการเชื่อมต่อย้อนกลับ:

ssh -p 62222 localhost

* ฉันไม่ทราบเกี่ยวกับความปลอดภัยเพียงพอที่จะสามารถให้คำแนะนำในการสร้างผู้ใช้ที่ด้อยโอกาสได้อย่างเหมาะสม นั่นอาจเป็นสิ่งที่ควรครอบคลุมในคำถามแยกต่างหาก



2

ตามความต้องการเฉพาะของคุณฉันอาจจะ:

  1. ขอให้พวกเขาบอกรหัสผ่านของเราเตอร์ให้ฉัน
  2. ล็อกอินและตั้งค่าการส่งต่อพอร์ตสำหรับพอร์ต 22 เท่านั้น
  3. เชื่อมต่อผ่าน SSH (หรือ SSH tunneling หากคุณต้องการพอร์ตเพิ่มเติมที่เปิด) และทำงานให้เสร็จ

ฉันลืมไปว่าคุณสามารถลองใช้reverse ssh tunnelได้แม้ว่าวิธีนี้จะต้องใช้คอมพิวเตอร์มากกว่าหนึ่งเครื่องในการทำงาน

ข้อมูลเพิ่มเติมสามารถดูได้ที่นี่


1) อาจจะไม่ทำงานเนื่องจากการเข้าถึงเราเตอร์มักจะเป็นสิ่งต้องห้ามสำหรับสาธารณชน
Lekensteyn

2

ฉันมักจะตั้งค่าอุโมงค์ IPv6 (จาก sixxs.net หรือ he.net) หากพวกเขายังไม่มี IPv6 และจากนั้นคอมพิวเตอร์จะมีที่อยู่แบบคงที่และฉันไม่ต้องยุ่งกับ NAT ฉันยังต้องการตั้งค่าการรับรองความถูกต้องด้วยรหัสผ่าน

Sixxs มีลูกค้าของตนเองที่คุณใช้ มันทำงานได้หลัง NAT เกือบทุกตัวและจะอัพเดทโดยอัตโนมัติเมื่อที่อยู่ IPv4 เปลี่ยน พวกเขามีคำแนะนำเกี่ยวกับวิธีการตั้งค่าและเป็นชุดสำหรับ Ubuntu

Hurricane Electric ใช้อุโมงค์ที่ส่งแพคเกจ IPv6 เป็นเพย์โหลดของแพ็คเก็ต IPv4 ไม่เหมือนกับ Sixxs ไม่มีการใช้ TCP / UDP ซึ่งหมายความว่า NAT ที่คุณอยู่เบื้องหลังนั้นต้องสนับสนุนการส่งต่อ PROTOCOL 41 (ไม่ใช่พอร์ต) และมีคอมพิวเตอร์เพียงเครื่องเดียวที่อยู่เบื้องหลัง NAT สามารถใช้งานได้ ซอฟต์แวร์เพื่อใช้อุโมงค์เช่นนี้สร้างขึ้นใน Ubuntu

สำหรับเขาฉันใช้บางอย่างเช่นนี้ใน/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

อีกอย่างที่คุณต้องทำคืออัพเดตจุดปลายอุโมงค์ของคุณ เนื่องจากคุณไม่ทราบว่าเมื่อใดที่ IP ภายนอกเปลี่ยนแปลงคุณจะต้องลองอัปเดตจุดสิ้นสุดทุกสองสามนาที คุณสามารถใช้สิ่งนี้และเรียกใช้จาก 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"

1
ต้องพยายามทำอะไรเพื่อตั้งค่าอุโมงค์ให้ถูกต้อง การเชื่อมต่อนี้เป็นหลักสูตรที่ใช้คีย์เป็นเหตุให้ฉันใช้ssh-import-id
Lekensteyn

แน่นอนฉันชอบที่จะเรียนรู้เพิ่มเติมเกี่ยวกับเคล็ดลับนี้
RafałCieślak

0

ตลอดหลายปีที่ผ่านมาฉันได้พัฒนา GUI เพื่อทำสิ่งที่ OP ต้องการ ... ยกเว้นว่าต้องมีการเข้าถึง ssh ไปยังเซิร์ฟเวอร์ที่สามด้วย IP สาธารณะตามที่ Pavlos แนะนำ คุณสามารถดูแพ็คเกจเดเบียนและคำแนะนำได้ที่นี่:

http://pietrobattiston.it/reachme

ขอให้สังเกตว่า (ยัง) ไม่สามารถดูแลการกำหนดค่าเริ่มต้น - กล่าวคือคุณต้องตั้งค่าคีย์ rsa สำหรับการเชื่อมต่อแบบไม่มีรหัสผ่านด้วยตัวเอง เมื่อตั้งค่าแล้ว "reachthem" จะช่วยให้คุณเห็นว่า "reachme" เชื่อมต่ออยู่หรือไม่และเปิด ssh shell / เรียกดูระบบไฟล์ / ดูหน้าจอ (ทดลอง)

เห็นได้ชัดว่าคุณไม่จำเป็นต้องใช้คอมพิวเตอร์เครื่องที่สามหากคอมพิวเตอร์ของคุณมี IP สาธารณะเช่นเดียวกับคำตอบของændrük และชัดเจนประโยชน์ของ GUI คือผู้ใช้รีโมตไม่จำเป็นต้องป้อนคำสั่งใด ๆ ในเทอร์มินัล ... แต่ประโยชน์ส่วนนี้จะหายไปหากผู้ใช้รีโมตต้องติดตั้ง reachme ดังนั้นฉันเพียงแค่ติดตั้งและตั้งค่า reachme ให้กับทุกคนที่ฉันติดตั้ง Ubuntu ไป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.