How To: Access A WiFi Pineapple Remotely (Relay Server Setup & SSH Tunneling)
สารบัญ:
- การส่งต่อพอร์ตท้องถิ่น
- การส่งต่อพอร์ตระยะไกล
- การส่งต่อพอร์ตแบบไดนามิก
- ตั้งค่า SSH Tunneling ใน Windows
- ข้อสรุป
SSH tunneling หรือการส่งต่อพอร์ต SSH เป็นวิธีการสร้างการเชื่อมต่อ SSH ที่เข้ารหัสระหว่างไคลเอนต์และเครื่องเซิร์ฟเวอร์ผ่านพอร์ตบริการที่สามารถถ่ายทอด
การส่งต่อ SSH มีประโยชน์สำหรับการถ่ายโอนข้อมูลเครือข่ายของบริการที่ใช้โปรโตคอลที่ไม่ได้เข้ารหัสเช่น VNC หรือ FTP การเข้าถึงเนื้อหาที่ จำกัด ทางภูมิศาสตร์หรือการข้ามไฟร์วอลล์กลาง โดยทั่วไปคุณสามารถส่งต่อพอร์ต TCP ใด ๆ และสร้างอุโมงค์การรับส่งข้อมูลผ่านการเชื่อมต่อ SSH ที่ปลอดภัย
การส่งต่อพอร์ต SSH มีสามประเภท:
- การส่งต่อพอร์ตท้องถิ่น - ส่งต่อการเชื่อมต่อจากโฮสต์ไคลเอนต์ไปยังโฮสต์เซิร์ฟเวอร์ SSH แล้วไปยังพอร์ตโฮสต์ปลายทางลบการส่งต่อพอร์ต - ส่งต่อพอร์ตจากโฮสต์เซิร์ฟเวอร์ไปยังโฮสต์ไคลเอนต์จากนั้นไปยังพอร์ตโฮสต์ปลายทางการส่งต่อพอร์ตแบบไดนามิก - สร้างพร็อกซีเซิร์ฟเวอร์ SOCKS ซึ่งอนุญาตการสื่อสารข้ามช่วงพอร์ต
เราจะพูดถึงวิธีการตั้งค่าอุโมงค์ SSH ที่เข้ารหัสในพื้นที่ระยะไกลและแบบไดนามิก
การส่งต่อพอร์ตท้องถิ่น
การส่งต่อพอร์ตบนเครื่องช่วยให้คุณสามารถส่งต่อพอร์ตบนเครื่องโลคัล (ไคลเอ็นต์ ssh) ไปยังพอร์ตบนเครื่องระยะไกล (เซิร์ฟเวอร์ sshs) ซึ่งจะส่งต่อไปยังพอร์ตบนเครื่องปลายทาง
ในการส่งต่อไคลเอ็นต์ SSH ประเภทนี้จะรับฟังพอร์ตที่กำหนดและทำการเชื่อมต่อกับพอร์ตนั้นไปยังพอร์ตที่ระบุบนเซิร์ฟเวอร์ SSH ระยะไกลซึ่งจะเชื่อมต่อกับพอร์ตในเครื่องปลายทาง เครื่องปลายทางสามารถเป็นเซิร์ฟเวอร์ SSH ระยะไกลหรือเครื่องอื่น ๆ
การส่งต่อพอร์ตท้องถิ่นส่วนใหญ่จะใช้ในการเชื่อมต่อกับบริการระยะไกลบนเครือข่ายภายในเช่นฐานข้อมูลหรือเซิร์ฟเวอร์ VNC
ใน Linux, macOS และระบบ Unix อื่น ๆ เพื่อสร้างการส่งต่อพอร์ตโลคัลผ่านตัวเลือก
-L
ไปยังไคลเอ็นต์
ssh
:
ssh -L LOCAL_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER
ตัวเลือกที่ใช้มีดังนี้:
-
LOCAL_PORT
- IP ของเครื่องโลคัลและหมายเลขพอร์ต เมื่อLOCAL_IP
ถูกละไว้ไคลเอ็นต์ ssh ผูกบน localhostDESTINATION:DESTINATION_PORT
- IP หรือชื่อโฮสต์และพอร์ตของเครื่องปลายทางSERVER_IP
- ผู้ใช้ SSH ระยะไกลและที่อยู่ IP ของเซิร์ฟเวอร์
คุณสามารถใช้หมายเลขพอร์ตที่มากกว่า
1024
เป็น
LOCAL_PORT
หมายเลขพอร์ตที่น้อยกว่า
1024
เป็นพอร์ตพิเศษและสามารถใช้ได้โดยรูทเท่านั้น หากเซิร์ฟเวอร์ SSH ของคุณกำลังรับฟังพอร์ตอื่นที่ไม่ใช่ 22 (ค่าดีฟอลต์) ให้ใช้ตัวเลือก
-p
ชื่อโฮสต์ปลายทางต้องสามารถแก้ไขได้จากเซิร์ฟเวอร์ SSH
สมมติว่าคุณมีเซิร์ฟเวอร์ฐานข้อมูล MySQL ที่ทำงานบนเครื่อง
db001.host
บนเครือข่ายภายใน (ส่วนตัว) บนพอร์ต 3306 ซึ่งสามารถเข้าถึงได้จากเครื่อง
pub001.host
และคุณต้องการเชื่อมต่อโดยใช้เครื่องไคลเอนต์
mysql
ในเครื่องกับเซิร์ฟเวอร์ฐานข้อมูล ในการทำเช่นนั้นคุณสามารถส่งต่อการเชื่อมต่อดังนี้:
ssh -L 3336:db001.host:3306 [email protected]
เมื่อคุณเรียกใช้คำสั่งคุณจะได้รับแจ้งให้ป้อนรหัสผ่านผู้ใช้ SSH ระยะไกล หลังจากป้อนแล้วคุณจะเข้าสู่เซิร์ฟเวอร์ระยะไกลและอุโมงค์ SSH จะถูกสร้างขึ้น เป็นความคิดที่ดีที่จะตั้งค่าการรับรองความถูกต้องโดยใช้คีย์ SSH และเชื่อมต่อกับเซิร์ฟเวอร์โดยไม่ต้องป้อนรหัสผ่าน
ตอนนี้ถ้าคุณชี้ไคลเอนต์ฐานข้อมูลเครื่องภายในเครื่องไปที่
127.0.0.1:3336
การเชื่อมต่อจะถูกส่งต่อไปยังเซิร์ฟเวอร์
db001.host:3306
MySQL ผ่านเครื่อง
pub001.host
ซึ่งจะทำหน้าที่เป็นเซิร์ฟเวอร์ระดับกลาง
คุณสามารถส่งต่อหลายพอร์ตไปยังหลายปลายทางในคำสั่ง ssh เดียว ตัวอย่างเช่นคุณมีเซิร์ฟเวอร์ฐานข้อมูล MySQL ตัวอื่นที่ทำงานบนเครื่อง
db002.host
และคุณต้องการเชื่อมต่อกับเซิร์ฟเวอร์ทั้งสองจากไคลเอนต์ในพื้นที่ของคุณที่คุณจะเรียกใช้:
ssh -L 3336:db001.host:3306 3337:db002.host:3306 [email protected]
หากต้องการเชื่อมต่อกับเซิร์ฟเวอร์ที่สองคุณจะต้องใช้
127.0.0.1:3337
เมื่อโฮสต์ปลายทางเหมือนกับเซิร์ฟเวอร์ SSH แทนที่จะระบุ IP โฮสต์ปลายทางหรือชื่อโฮสต์คุณสามารถใช้
localhost
สมมติว่าคุณต้องเชื่อมต่อกับเครื่องระยะไกลผ่าน VNC ซึ่งทำงานบนเซิร์ฟเวอร์เดียวกันและไม่สามารถเข้าถึงได้จากภายนอก คำสั่งที่คุณจะใช้คือ:
ssh -L 5901:127.0.0.1:5901 -N -f [email protected]
ตัวเลือก
-f
บอกให้คำสั่ง
ssh
ทำงานในพื้นหลังและ
-N
จะไม่ดำเนินการคำสั่งระยะไกล เราใช้
localhost
เพราะ VNC และเซิร์ฟเวอร์ SSH กำลังทำงานบนโฮสต์เดียวกัน
การส่งต่อพอร์ตระยะไกล
การส่งต่อพอร์ตระยะไกลเป็นสิ่งที่ตรงกันข้ามกับการส่งต่อพอร์ตท้องถิ่น อนุญาตให้คุณส่งต่อพอร์ตบนเครื่องรีโมต (เซิร์ฟเวอร์ ssh) ไปยังพอร์ตบนเครื่องโลคัล (ไคลเอ็นต์ sshs) ซึ่งจะถูกส่งต่อไปยังพอร์ตบนเครื่องปลายทาง
ในการส่งต่อเซิร์ฟเวอร์ SSH ประเภทนี้จะรับฟังพอร์ตที่กำหนดและทำการเชื่อมต่อกับพอร์ตนั้นไปยังพอร์ตที่ระบุบนไคลเอนต์ SSH ในพื้นที่ซึ่งจะเชื่อมต่อกับพอร์ตบนเครื่องปลายทาง เครื่องปลายทางสามารถเป็นเครื่องท้องถิ่นหรือเครื่องอื่น ๆ
ใน Linux, macOS และระบบ Unix อื่น ๆ เพื่อสร้างการส่งต่อพอร์ตระยะไกลผ่านตัวเลือก
-R
ไปยังไคลเอ็นต์
ssh
:
ssh -R REMOTE_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER
ตัวเลือกที่ใช้มีดังนี้:
-
REMOTE_PORT
- IP และหมายเลขพอร์ตบนเซิร์ฟเวอร์ SSH ระยะไกลREMOTE
ว่างเปล่าหมายความว่าเซิร์ฟเวอร์ SSH ระยะไกลจะเชื่อมโยงกับทุกอินเตอร์เฟสDESTINATION:DESTINATION_PORT
- IP หรือชื่อโฮสต์และพอร์ตของเครื่องปลายทางSERVER_IP
- ผู้ใช้ SSH ระยะไกลและที่อยู่ IP ของเซิร์ฟเวอร์
การส่งต่อพอร์ตท้องถิ่นส่วนใหญ่จะใช้เพื่อให้การเข้าถึงบริการภายในให้กับใครบางคนจากภายนอก
สมมติว่าคุณกำลังพัฒนาเว็บแอปพลิเคชันในเครื่องของคุณและคุณต้องการแสดงตัวอย่างให้กับนักพัฒนาของคุณ คุณไม่มี IP สาธารณะดังนั้นผู้พัฒนารายอื่นจึงไม่สามารถเข้าถึงแอปพลิเคชันผ่านอินเทอร์เน็ต
ssh -L 8080:127.0.0.1:3000 -N -f [email protected]
คำสั่งด้านบนจะทำให้เซิร์ฟเวอร์ ssh ฟังพอร์ต
8080
และรับส่งข้อมูลทั้งหมดจากพอร์ตนี้ไปยังเครื่องท้องถิ่นของคุณที่พอร์ต
3000
ตอนนี้ผู้พัฒนาเพื่อนของคุณสามารถพิมพ์
the_ssh_server_ip:8080
ในเบราว์เซอร์ของเขา / เธอและดูตัวอย่างแอปพลิเคชันที่ยอดเยี่ยม
การส่งต่อพอร์ตแบบไดนามิก
การส่งต่อพอร์ตแบบไดนามิกช่วยให้คุณสร้างซ็อกเก็ตบนเครื่องโลคัล (ssh ไคลเอ็นต์) ซึ่งทำหน้าที่เป็นพร็อกซีเซิร์ฟเวอร์ SOCKS เมื่อไคลเอ็นต์เชื่อมต่อกับพอร์ตนี้การเชื่อมต่อจะถูกส่งต่อไปยังเครื่องระยะไกล (เซิร์ฟเวอร์ ssh) ซึ่งจะถูกส่งต่อไปยังพอร์ตแบบไดนามิกบนเครื่องปลายทาง
ด้วยวิธีนี้แอปพลิเคชันทั้งหมดที่ใช้พร็อกซี SOCKS จะเชื่อมต่อกับเซิร์ฟเวอร์ SSH และเซิร์ฟเวอร์จะส่งต่อการรับส่งข้อมูลทั้งหมดไปยังปลายทางที่แท้จริง
ใน Linux, macOS และระบบ Unix อื่น ๆ เพื่อสร้างการส่งต่อพอร์ตแบบไดนามิก (SOCKS) ผ่านตัวเลือก
-D
ไปยังไคลเอ็นต์
ssh
:
ssh -D LOCAL_PORT SSH_SERVER
ตัวเลือกที่ใช้มีดังนี้:
-
LOCAL_PORT
- IP ของเครื่องโลคัลและหมายเลขพอร์ต เมื่อLOCAL_IP
ถูกละไว้ไคลเอ็นต์ ssh ผูกบน localhostSERVER_IP
- ผู้ใช้ SSH ระยะไกลและที่อยู่ IP ของเซิร์ฟเวอร์
ตัวอย่างทั่วไปของการส่งต่อพอร์ตแบบไดนามิกคือการส่งสัญญาณปริมาณการใช้เว็บเบราว์เซอร์ผ่านเซิร์ฟเวอร์ SSH
คำสั่งต่อไปนี้จะสร้างอุโมงค์ SOCKS บนพอร์ต
9090
:
ssh -D 9090 -N -f [email protected]
เมื่อสร้าง tunneling แล้วคุณสามารถกำหนดค่าแอปพลิเคชันของคุณเพื่อใช้งานได้ บทความนี้จะอธิบายวิธีกำหนดค่าเบราว์เซอร์ Firefox และ Google Chrome ให้ใช้พร็อกซี SOCKS
การส่งต่อพอร์ตจะต้องมีการกำหนดค่าแยกต่างหากสำหรับแต่ละแอปพลิเคชันที่คุณต้องการใช้ช่องทางการรับส่งข้อมูลที่คิด
ตั้งค่า SSH Tunneling ใน Windows
ผู้ใช้ Windows สามารถสร้างอุโมงค์ SSH โดยใช้ PuTTY SSH ไคลเอ็นต์ คุณสามารถดาวน์โหลด PuTTY ได้ที่นี่
-
เรียกใช้ Putty และป้อนที่อยู่ IP ของเซิร์ฟเวอร์ SSH ในฟิลด์
Host name (or IP address)
หน้าต่างใหม่ที่ขอชื่อผู้ใช้และรหัสผ่านของคุณจะปรากฏขึ้น เมื่อคุณป้อนชื่อผู้ใช้และรหัสผ่านคุณจะเข้าสู่เซิร์ฟเวอร์ของคุณและอุโมงค์ SSH จะเริ่มขึ้น
การตั้งค่าการตรวจสอบกุญแจสาธารณะจะช่วยให้คุณเชื่อมต่อกับเซิร์ฟเวอร์ของคุณโดยไม่ต้องป้อนรหัสผ่าน
ข้อสรุป
เราได้แสดงวิธีการตั้งค่าอุโมงค์ SSH และส่งต่อการจราจรผ่านการเชื่อมต่อ SSH ที่ปลอดภัย เพื่อความสะดวกในการใช้งานคุณสามารถกำหนดอุโมงค์ SSH ในไฟล์กำหนดค่า SSH ของคุณหรือสร้างนามแฝง Bash ที่จะตั้งค่าอุโมงค์ SSH
ความปลอดภัยของ sshวิธีการตั้งค่า Metered Connection ใน Windows 10
Windows
วิธีการตั้งค่า gmail ในธันเดอร์เบิร์ด
เรียนรู้วิธีตั้งค่า gmail ใน Thunderbird เรียนรู้เพิ่มเติมเกี่ยวกับการตั้งค่าเซิร์ฟเวอร์ smtp
วิธีการตั้งค่า ssh tunneling เพื่อข้ามไฟร์วอลล์
ไฟร์วอลล์เป็นสิ่งที่ดี แต่ถ้าคุณหยุดไม่ให้ทำอะไร SSH Tunneling เป็นตัวเลือกที่ดีในการสำรวจ