ไคลเอนต์ SSH เชื่อมต่อกับไฟล์ เซิร์ฟเวอร์ Secure Shell ซึ่งช่วยให้คุณสามารถเรียกใช้คำสั่งเทอร์มินัลได้ราวกับว่าคุณนั่งอยู่หน้าคอมพิวเตอร์เครื่องอื่น แต่ไคลเอนต์ SSH ยังอนุญาตให้คุณ "อุโมงค์" พอร์ตระหว่างระบบโลคัลของคุณกับเซิร์ฟเวอร์ SSH ระยะไกล
SSH tunneling มีสามประเภทที่แตกต่างกันและทั้งหมดนี้ใช้เพื่อวัตถุประสงค์ที่แตกต่างกัน แต่ละอย่างเกี่ยวข้องกับการใช้เซิร์ฟเวอร์ SSH เพื่อเปลี่ยนเส้นทางการรับส่งข้อมูลจากพอร์ตเครือข่ายหนึ่งไปยังอีกพอร์ตหนึ่ง การรับส่งข้อมูลจะถูกส่งผ่านการเชื่อมต่อ SSH ที่เข้ารหัสดังนั้นจึงไม่สามารถตรวจสอบหรือแก้ไขระหว่างการขนส่งได้
คุณสามารถทำได้ด้วยไฟล์
ssh
คำสั่งรวมอยู่ใน Linux, macOS และอื่น ๆ
เหมือน UNIX
ระบบปฏิบัติการ. ใน Windows ซึ่งไม่มีคำสั่ง ssh ในตัวเราขอแนะนำเครื่องมือฟรี
อ้วน
เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ SSH รองรับ SSH tunneling ด้วย
การส่งต่อพอร์ตภายในเครื่อง: ทำให้ทรัพยากรระยะไกลสามารถเข้าถึงได้บนระบบท้องถิ่นของคุณ
“ การส่งต่อพอร์ตภายในเครื่อง” ช่วยให้คุณสามารถเข้าถึงทรัพยากรเครือข่ายท้องถิ่นที่ไม่ได้สัมผัสกับอินเทอร์เน็ต ตัวอย่างเช่นสมมติว่าคุณต้องการเข้าถึงเซิร์ฟเวอร์ฐานข้อมูลที่สำนักงานจากที่บ้าน ด้วยเหตุผลด้านความปลอดภัยเซิร์ฟเวอร์ฐานข้อมูลนั้นได้รับการกำหนดค่าให้ยอมรับการเชื่อมต่อจากเครือข่ายสำนักงานท้องถิ่นเท่านั้น แต่ถ้าคุณมีสิทธิ์เข้าถึงเซิร์ฟเวอร์ SSH ที่สำนักงานและเซิร์ฟเวอร์ SSH นั้นอนุญาตให้เชื่อมต่อจากภายนอกเครือข่ายสำนักงานคุณสามารถเชื่อมต่อกับเซิร์ฟเวอร์ SSH นั้นจากที่บ้านและเข้าถึงเซิร์ฟเวอร์ฐานข้อมูลได้ราวกับว่าคุณอยู่ในสำนักงาน มักจะเป็นเช่นนี้เนื่องจากการรักษาความปลอดภัยเซิร์ฟเวอร์ SSH เดียวจากการโจมตีนั้นง่ายกว่าการรักษาความปลอดภัยทรัพยากรเครือข่ายต่างๆ
ในการดำเนินการนี้คุณต้องสร้างการเชื่อมต่อ SSH กับเซิร์ฟเวอร์ SSH และแจ้งให้ไคลเอ็นต์ส่งต่อทราฟฟิกจากพอร์ตเฉพาะจากพีซีในพื้นที่ของคุณเช่นพอร์ต 1234 ไปยังที่อยู่ของเซิร์ฟเวอร์ของฐานข้อมูลและพอร์ตบนเครือข่ายสำนักงาน ดังนั้นเมื่อคุณพยายามเข้าถึงเซิร์ฟเวอร์ฐานข้อมูลที่พอร์ต 1234 พีซีปัจจุบันของคุณ“ localhost” การรับส่งข้อมูลนั้นจะถูก“ ปรับ” โดยอัตโนมัติผ่านการเชื่อมต่อ SSH และส่งไปยังเซิร์ฟเวอร์ฐานข้อมูล เซิร์ฟเวอร์ SSH ตั้งอยู่ตรงกลางส่งต่อการรับส่งข้อมูลไปมา คุณสามารถใช้บรรทัดคำสั่งหรือเครื่องมือกราฟิกใด ๆ เพื่อเข้าถึงเซิร์ฟเวอร์ฐานข้อมูลราวกับว่ามันกำลังทำงานบนพีซีภายในของคุณ
หากต้องการใช้การส่งต่อภายในให้เชื่อมต่อกับเซิร์ฟเวอร์ SSH ตามปกติ แต่ยังจัดหาไฟล์
-L
การโต้เถียง. ไวยากรณ์คือ:
ssh -L local_port: remote_address: remote_port [email protected]
ตัวอย่างเช่นสมมติว่าเซิร์ฟเวอร์ฐานข้อมูลที่สำนักงานของคุณตั้งอยู่ที่ 192.168.1.111 ในเครือข่ายสำนักงาน คุณสามารถเข้าถึงเซิร์ฟเวอร์ SSH ของสำนักงานได้ที่
ssh.youroffice.com
และบัญชีผู้ใช้ของคุณบนเซิร์ฟเวอร์ SSH คือ
บ๊อบ
. ในกรณีนั้นคำสั่งของคุณจะมีลักษณะดังนี้:
ssh -L 8888: 192.168.1.111: 1234 [email protected]
หลังจากเรียกใช้คำสั่งนั้นคุณจะสามารถเข้าถึงเซิร์ฟเวอร์ฐานข้อมูลที่พอร์ต 8888 ที่ localhost ดังนั้นหากเซิร์ฟเวอร์ฐานข้อมูลเสนอการเข้าถึงเว็บคุณสามารถเสียบ http: // localhost: 8888 เข้ากับเว็บเบราว์เซอร์ของคุณเพื่อเข้าถึงได้ หากคุณมีเครื่องมือบรรทัดคำสั่งที่ต้องการที่อยู่เครือข่ายของฐานข้อมูลให้ชี้ไปที่ localhost: 8888 การรับส่งข้อมูลทั้งหมดที่ส่งไปยังพอร์ต 8888 บนพีซีของคุณจะถูกปรับเป็น 192.168.1.111:1234 บนเครือข่ายสำนักงานของคุณ
จะสับสนกว่าเล็กน้อยหากคุณต้องการเชื่อมต่อกับแอปพลิเคชันเซิร์ฟเวอร์ที่ทำงานบนระบบเดียวกับเซิร์ฟเวอร์ SSH ตัวอย่างเช่นสมมติว่าคุณมีเซิร์ฟเวอร์ SSH ที่ทำงานที่พอร์ต 22 บนคอมพิวเตอร์สำนักงานของคุณ แต่คุณมีเซิร์ฟเวอร์ฐานข้อมูลที่ทำงานที่พอร์ต 1234 ในระบบเดียวกันในที่อยู่เดียวกัน คุณต้องการเข้าถึงเซิร์ฟเวอร์ฐานข้อมูลจากที่บ้าน แต่ระบบยอมรับเฉพาะการเชื่อมต่อ SSH บนพอร์ต 22 และไฟร์วอลล์ไม่อนุญาตการเชื่อมต่อภายนอกอื่น ๆ
ในกรณีนี้คุณสามารถเรียกใช้คำสั่งดังต่อไปนี้:
ssh -L 8888: localhost: 1234 [email protected]
เมื่อคุณพยายามเข้าถึงเซิร์ฟเวอร์ฐานข้อมูลที่พอร์ต 8888 บนพีซีปัจจุบันของคุณการรับส่งข้อมูลจะถูกส่งผ่านการเชื่อมต่อ SSH เมื่อมาถึงระบบที่รันเซิร์ฟเวอร์ SSH เซิร์ฟเวอร์ SSH จะส่งไปยังพอร์ต 1234 บน“ localhost” ซึ่งเป็นพีซีเครื่องเดียวกับที่รันเซิร์ฟเวอร์ SSH เอง ดังนั้น“ localhost” ในคำสั่งด้านบนจึงหมายถึง“ localhost” จากมุมมองของเซิร์ฟเวอร์ระยะไกล
ในการดำเนินการนี้ในแอปพลิเคชัน PuTTY บน Windows ให้เลือกการเชื่อมต่อ> SSH> อุโมงค์ เลือกตัวเลือก“ ท้องถิ่น” สำหรับ "พอร์ตต้นทาง" ให้ป้อนพอร์ตภายในเครื่อง สำหรับ“ ปลายทาง” ให้ป้อนที่อยู่ปลายทางและพอร์ตในรูปแบบ remote_address: remote_port
ตัวอย่างเช่นหากคุณต้องการตั้งค่าอุโมงค์ SSH เดียวกันกับด้านบนคุณต้องป้อน
8888
เป็นพอร์ตต้นทางและ
localhost: 1234
เป็นปลายทาง คลิก“ เพิ่ม” หลังจากนั้นคลิก“ เปิด” เพื่อเปิดการเชื่อมต่อ SSH คุณจะต้องป้อนที่อยู่และพอร์ตของเซิร์ฟเวอร์ SSH ในหน้าจอหลัก“ เซสชัน” ก่อนที่จะเชื่อมต่อแน่นอน
การส่งต่อพอร์ตระยะไกล: ทำให้ทรัพยากรในเครื่องสามารถเข้าถึงได้บนระบบระยะไกล
“ การส่งต่อพอร์ตระยะไกล” ตรงข้ามกับการส่งต่อภายในเครื่องและไม่ได้ใช้บ่อย ช่วยให้คุณสามารถสร้างทรัพยากรบนพีซีภายในของคุณพร้อมใช้งานบนเซิร์ฟเวอร์ SSH ตัวอย่างเช่นสมมติว่าคุณใช้งานเว็บเซิร์ฟเวอร์บนพีซีท้องถิ่นที่คุณนั่งอยู่ตรงหน้า แต่พีซีของคุณอยู่หลังไฟร์วอลล์ที่ไม่อนุญาตให้มีการรับส่งข้อมูลขาเข้ามายังซอฟต์แวร์เซิร์ฟเวอร์
สมมติว่าคุณสามารถเข้าถึงเซิร์ฟเวอร์ SSH ระยะไกลคุณสามารถเชื่อมต่อกับเซิร์ฟเวอร์ SSH นั้นและใช้การส่งต่อพอร์ตระยะไกล ไคลเอ็นต์ SSH ของคุณจะบอกให้เซิร์ฟเวอร์ส่งต่อพอร์ตเฉพาะเช่นพอร์ต 1234 บนเซิร์ฟเวอร์ SSH ไปยังที่อยู่และพอร์ตเฉพาะบนพีซีปัจจุบันหรือเครือข่ายท้องถิ่นของคุณ เมื่อมีคนเข้าถึงพอร์ต 1234 บนเซิร์ฟเวอร์ SSH ทราฟฟิกนั้นจะถูก "ปรับจูน" โดยอัตโนมัติผ่านการเชื่อมต่อ SSH ทุกคนที่สามารถเข้าถึงเซิร์ฟเวอร์ SSH จะสามารถเข้าถึงเว็บเซิร์ฟเวอร์ที่ทำงานบนพีซีของคุณได้ นี่เป็นวิธีการขุดอุโมงค์ผ่านไฟร์วอลล์อย่างมีประสิทธิภาพ
หากต้องการใช้การส่งต่อระยะไกลให้ใช้ไฟล์
ssh
คำสั่งด้วย
- ร
การโต้เถียง. ไวยากรณ์ส่วนใหญ่เหมือนกับการส่งต่อภายในเครื่อง:
ssh -R remote_port: local_address: local_port [email protected]
สมมติว่าคุณต้องการให้แอปพลิเคชันเซิร์ฟเวอร์ฟังที่พอร์ต 1234 บนพีซีในพื้นที่ของคุณที่พอร์ต 8888 บนเซิร์ฟเวอร์ SSH ระยะไกล ที่อยู่เซิร์ฟเวอร์ SSH คือ
ssh.youroffice.com
และชื่อผู้ใช้ของคุณบนเซิร์ฟเวอร์ SSH คือ
บ๊อบ
. คุณต้องเรียกใช้คำสั่งต่อไปนี้:
ssh -R 8888: localhost: 1234 [email protected]
จากนั้นบางคนสามารถเชื่อมต่อกับเซิร์ฟเวอร์ SSH ที่พอร์ต 8888 และการเชื่อมต่อนั้นจะถูกจูนไปยังแอปพลิเคชันเซิร์ฟเวอร์ที่ทำงานที่พอร์ต 1234 บนเครื่องพีซีที่คุณสร้างการเชื่อมต่อ
หากต้องการทำสิ่งนี้ใน PuTTY บน Windows ให้เลือกการเชื่อมต่อ> SSH> อุโมงค์ เลือกตัวเลือก“ รีโมท” สำหรับ“ พอร์ตต้นทาง” ให้ป้อนพอร์ตระยะไกล สำหรับ "Destination" ให้ป้อนที่อยู่ปลายทางและพอร์ตในรูปแบบ local_address: local_port
ตัวอย่างเช่นหากคุณต้องการตั้งค่าตัวอย่างข้างต้นคุณต้องป้อน
8888
เป็นพอร์ตต้นทางและ
localhost: 1234
เป็นปลายทาง คลิก“ เพิ่ม” หลังจากนั้นคลิก“ เปิด” เพื่อเปิดการเชื่อมต่อ SSH คุณจะต้องป้อนที่อยู่และพอร์ตของเซิร์ฟเวอร์ SSH ในหน้าจอหลัก“ เซสชัน” ก่อนที่จะเชื่อมต่อแน่นอน
จากนั้นผู้คนสามารถเชื่อมต่อกับพอร์ต 8888 บนเซิร์ฟเวอร์ SSH และทราฟฟิกของพวกเขาจะถูกปรับไปที่พอร์ต 1234 ในระบบภายใน
ตามค่าเริ่มต้นเซิร์ฟเวอร์ SSH ระยะไกลจะรับฟังการเชื่อมต่อจากโฮสต์เดียวกันเท่านั้น กล่าวอีกนัยหนึ่งเฉพาะผู้ที่อยู่ในระบบเดียวกับเซิร์ฟเวอร์ SSH เท่านั้นที่จะสามารถเชื่อมต่อได้ นี่คือเหตุผลด้านความปลอดภัย คุณจะต้องเปิดใช้งานตัวเลือก“ GatewayPorts” ใน sshd_config บนเซิร์ฟเวอร์ SSH ระยะไกลหากคุณต้องการลบล้างพฤติกรรมนี้
การส่งต่อพอร์ตแบบไดนามิก: ใช้เซิร์ฟเวอร์ SSH ของคุณเป็นพร็อกซี
ที่เกี่ยวข้อง: อะไรคือความแตกต่างระหว่าง VPN และพร็อกซี?
นอกจากนี้ยังมี“ การส่งต่อพอร์ตแบบไดนามิก” ซึ่งทำงานคล้ายกับพร็อกซีหรือ VPN ไคลเอ็นต์ SSH จะสร้างไฟล์ พร็อกซี SOCKS คุณสามารถกำหนดค่าแอปพลิเคชันที่จะใช้ การรับส่งข้อมูลทั้งหมดที่ส่งผ่านพร็อกซีจะถูกส่งผ่านเซิร์ฟเวอร์ SSH สิ่งนี้คล้ายกับการส่งต่อภายในเครื่องโดยใช้การรับส่งข้อมูลในพื้นที่ที่ส่งไปยังพอร์ตเฉพาะบนพีซีของคุณและส่งผ่านการเชื่อมต่อ SSH ไปยังตำแหน่งระยะไกล
ที่เกี่ยวข้อง: เหตุใดการใช้เครือข่าย Wi-Fi สาธารณะจึงอาจเป็นอันตรายได้แม้ว่าจะเข้าถึงเว็บไซต์ที่เข้ารหัสก็ตาม
ตัวอย่างเช่นสมมติว่าคุณกำลังใช้เครือข่าย Wi-Fi สาธารณะ คุณต้องการ ท่องเว็บอย่างปลอดภัยโดยไม่ถูกสอดแนม . หากคุณสามารถเข้าถึงเซิร์ฟเวอร์ SSH ที่บ้านคุณสามารถเชื่อมต่อและใช้การส่งต่อพอร์ตแบบไดนามิก ไคลเอนต์ SSH จะสร้างพร็อกซี SOCKS บนพีซีของคุณ การรับส่งข้อมูลทั้งหมดที่ส่งไปยังพร็อกซีนั้นจะถูกส่งผ่านการเชื่อมต่อเซิร์ฟเวอร์ SSH ไม่มีใครตรวจสอบเครือข่าย Wi-Fi สาธารณะที่จะสามารถตรวจสอบการท่องเว็บของคุณหรือเซ็นเซอร์เว็บไซต์ที่คุณเข้าถึงได้ จากมุมมองของเว็บไซต์ใด ๆ ที่คุณเยี่ยมชมจะเหมือนกับว่าคุณนั่งอยู่หน้าพีซีที่บ้าน นอกจากนี้ยังหมายความว่าคุณสามารถใช้เคล็ดลับนี้เพื่อเข้าถึงเว็บไซต์เฉพาะในสหรัฐฯในขณะที่อยู่นอกสหรัฐอเมริกาโดยสมมติว่าคุณสามารถเข้าถึงเซิร์ฟเวอร์ SSH ในสหรัฐอเมริกาได้
อีกตัวอย่างหนึ่งคุณอาจต้องการเข้าถึงแอปพลิเคชันเซิร์ฟเวอร์สื่อที่คุณมีบนเครือข่ายในบ้านของคุณ ด้วยเหตุผลด้านความปลอดภัยคุณอาจมีเพียงเซิร์ฟเวอร์ SSH ที่สัมผัสกับอินเทอร์เน็ต คุณไม่อนุญาตให้เชื่อมต่อขาเข้าจากอินเทอร์เน็ตไปยังแอปพลิเคชันเซิร์ฟเวอร์สื่อของคุณ คุณสามารถตั้งค่าการส่งต่อพอร์ตแบบไดนามิกกำหนดค่าเว็บเบราว์เซอร์เพื่อใช้พร็อกซี SOCKS จากนั้นเข้าถึงเซิร์ฟเวอร์ที่ทำงานบนเครือข่ายในบ้านของคุณผ่านเว็บเบราว์เซอร์ราวกับว่าคุณนั่งอยู่หน้าระบบ SSH ที่บ้าน ตัวอย่างเช่นหากเซิร์ฟเวอร์สื่อของคุณอยู่ที่พอร์ต 192.168.1.123 บนเครือข่ายภายในบ้านของคุณคุณสามารถเสียบที่อยู่ได้
192.168.1.123
ลงในแอปพลิเคชันใด ๆ โดยใช้พร็อกซี SOCKS และคุณสามารถเข้าถึงเซิร์ฟเวอร์สื่อได้ราวกับว่าคุณอยู่ในเครือข่ายในบ้านของคุณ
ในการใช้การส่งต่อแบบไดนามิกให้รันคำสั่ง ssh ด้วยนามสกุล
-D
อาร์กิวเมนต์เช่น:
ssh -D local_port [email protected]
ตัวอย่างเช่นสมมติว่าคุณมีสิทธิ์เข้าถึงเซิร์ฟเวอร์ SSH ที่
ssh.yourhome.com
และชื่อผู้ใช้ของคุณบนเซิร์ฟเวอร์ SSH คือ
บ๊อบ
. คุณต้องการใช้การส่งต่อแบบไดนามิกเพื่อเปิดพร็อกซี SOCKS ที่พอร์ต 8888 บนพีซีปัจจุบัน คุณต้องเรียกใช้คำสั่งต่อไปนี้:
ssh -D 8888 [email protected]
จากนั้นคุณสามารถกำหนดค่าเว็บเบราว์เซอร์หรือแอปพลิเคชันอื่นให้ใช้ที่อยู่ IP ในเครื่องของคุณ (127.0.01) และพอร์ต 8888 การรับส่งข้อมูลทั้งหมดจากแอปพลิเคชันนั้นจะถูกเปลี่ยนเส้นทางผ่านอุโมงค์
หากต้องการทำสิ่งนี้ใน PuTTY บน Windows ให้เลือกการเชื่อมต่อ> SSH> อุโมงค์ เลือกตัวเลือก“ ไดนามิก” สำหรับ "พอร์ตต้นทาง" ให้ป้อนพอร์ตภายในเครื่อง
ตัวอย่างเช่นหากคุณต้องการสร้างพร็อกซี SOCKS บนพอร์ต 8888 คุณต้องป้อน
8888
เป็นพอร์ตต้นทาง คลิก“ เพิ่ม” หลังจากนั้นคลิก“ เปิด” เพื่อเปิดการเชื่อมต่อ SSH คุณจะต้องป้อนที่อยู่และพอร์ตของเซิร์ฟเวอร์ SSH ในหน้าจอหลัก“ เซสชัน” ก่อนที่จะเชื่อมต่อแน่นอน
จากนั้นคุณสามารถกำหนดค่าแอปพลิเคชันเพื่อเข้าถึงพร็อกซี SOCKS บนพีซีภายในของคุณ (นั่นคือที่อยู่ IP 127.0.0.1 ซึ่งชี้ไปยังพีซีภายในของคุณ) และระบุพอร์ตที่ถูกต้อง
ที่เกี่ยวข้อง: วิธีกำหนดค่าพร็อกซีเซิร์ฟเวอร์ใน Firefox
ตัวอย่างเช่นคุณสามารถทำได้ กำหนดค่า Firefox เพื่อใช้พร็อกซี SOCKS . สิ่งนี้มีประโยชน์อย่างยิ่งเนื่องจาก Firefox สามารถมีการตั้งค่าพร็อกซีของตัวเองและไม่จำเป็นต้องใช้การตั้งค่าพร็อกซีทั้งระบบ Firefox จะส่งทราฟฟิกผ่าน SSH tunnel ในขณะที่แอพพลิเคชั่นอื่น ๆ จะใช้การเชื่อมต่ออินเทอร์เน็ตของคุณ
เมื่อทำสิ่งนี้ใน Firefox ให้เลือก“ การกำหนดค่าพร็อกซีด้วยตนเอง” ป้อน“ 127.0.0.1” ลงในกล่องโฮสต์ SOCKS และป้อนพอร์ตไดนามิกลงในช่อง“ พอร์ต” เว้นช่อง HTTP Proxy, SSL Proxy และ FTP Proxy ว่างไว้
อุโมงค์จะยังคงทำงานและเปิดอยู่ตราบเท่าที่คุณเปิดการเชื่อมต่อเซสชัน SSH เมื่อคุณสิ้นสุดเซสชัน SSH และยกเลิกการเชื่อมต่อจากเซิร์ฟเวอร์อุโมงค์จะถูกปิดด้วย เพียงเชื่อมต่อกับคำสั่งที่เหมาะสม (หรือตัวเลือกที่เหมาะสมใน PuTTY) เพื่อเปิดทันเนลอีกครั้ง