ข้อดีอย่างหนึ่งของการล็อกอินเข้าสู่เซิร์ฟเวอร์ด้วยการส่งต่อพอร์ตคือการอำนวยความสะดวกในการใช้งาน Jupyter Notebook ลิงก์นี้ให้คำอธิบายที่ดีเยี่ยมเกี่ยวกับวิธีการ ฉันอยากจะสรุปและขยายความให้พวกคุณทุกคนอ้างอิง
สถานการณ์ 1. เข้าสู่ระบบจากเครื่องท้องถิ่นชื่อ Host-A (เช่นแล็ปท็อปของคุณเอง) ไปยังเครื่องทำงานระยะไกลชื่อ Host-B
ssh user@Host-B -L port_A:localhost:port_B
jupyter notebook --NotebookApp.token='' --no-browser --port=port_B
จากนั้นคุณสามารถเปิดเบราว์เซอร์และป้อน: http: // localhost: port_A /เพื่อทำงานบน Host-B แต่จะเห็นใน Host-A
สถานการณ์ที่ 2. ล็อกอินจากเครื่องโลคัลชื่อ Host-A (เช่นแล็ปท็อปของคุณเอง) ไปยังเครื่องล็อกอินระยะไกลชื่อ Host-B และจากนั้นล็อกอินไปยังเครื่องทำงานระยะไกลชื่อ Host-C นี้มักจะเป็นกรณีสำหรับเซิร์ฟเวอร์การวิเคราะห์มากที่สุดภายในมหาวิทยาลัยและสามารถทำได้โดยการใช้สองเชื่อมต่อกับssh -L
-t
ssh -L port_A:localhost:port_B user@Host-B -t ssh -L port_B:localhost:port_C user@Host-C
jupyter notebook --NotebookApp.token='' --no-browser --port=port_C
จากนั้นคุณสามารถเปิดเบราว์เซอร์และป้อน: http: // localhost: port_A /เพื่อทำงานของคุณบน Host-C แต่จะเห็นใน Host-A
สถานการณ์ 3. เข้าสู่ระบบจากเครื่องโลคัลชื่อ Host-A (เช่นแล็ปท็อปของคุณเอง) ไปยังเครื่องล็อกอินระยะไกลชื่อ Host-B และจากนั้นล็อกอินไปยังเครื่องทำงานระยะไกลชื่อ Host-C และสุดท้ายเข้าสู่ระบบเครื่องทำงานระยะไกล Host- D. โดยปกติจะไม่เป็นเช่นนั้น แต่อาจเกิดขึ้นในบางครั้ง เป็นส่วนขยายของสถานการณ์ 2 และสามารถใช้ตรรกะเดียวกันกับเครื่องอื่น ๆ ได้
ssh -L port_A:localhost:port_B user@Host-B -t ssh -L port_B:localhost:port_C user@Host-C -t ssh -L port_C:localhost:port_D user@Host-D
jupyter notebook --NotebookApp.token='' --no-browser --port=port_D
จากนั้นคุณสามารถเปิดเบราว์เซอร์และป้อน: http: // localhost: port_A /เพื่อทำงานบน Host-D แต่จะเห็นใน Host-A
โปรดทราบว่า port_A, port_B, port_C, port_D สามารถยกเว้นตัวเลขสุ่มหมายเลขพอร์ตทั่วไปที่ระบุไว้ที่นี่ ในสถานการณ์ที่ 1 port_A และ port_B สามารถเหมือนกันเพื่อลดความซับซ้อนของขั้นตอน