ในวันที่ Emacs 24.3 แอนะล็อกของmulti:
ไวยากรณ์แบบเก่าได้ถูกวางไว้บนtramp-default-proxies-alist
แนวทางใหม่ซึ่งหมายความว่าคุณสามารถดำเนินการแบบมัลติฮ็อพได้อีกครั้งโดยไม่ต้องกำหนดค่าล่วงหน้า สำหรับรายละเอียดโปรดดู:
C-hig (tramp)Ad-hoc multi-hops
RET
ด้วยไวยากรณ์ใหม่แต่ละ 'ฮอป' |
ถูกคั่นด้วย ตัวอย่างในคู่มือคือ:
C-xC-f /ssh:bird@bastion|ssh:you@remotehost:/path
RET
ซึ่งเชื่อมต่อก่อนเป็นbird@bastion
และจากที่นั่นถึงyou@remotehost:/path
/ su: หรือ / sudo: บนโฮสต์ระยะไกล
คุณยังสามารถใช้ไวยากรณ์นี้เพื่อ sudo / su เพื่อรูท (หรือแน่นอนผู้ใช้รายอื่น) บนโฮสต์ระยะไกล:
C-xC-f /ssh:you@remotehost|sudo:remotehost:/path/to/file
RET
สำคัญ : อย่าลืมระบุชื่อโฮสต์อย่างชัดเจน: sudo:remotehost:
แทนที่จะเป็นsudo::
(ดูด้านล่าง)
เนื่องจากยังคงใช้กลไกพร็อกซีที่อยู่ด้านล่างtramp-default-proxies-alist
ตอนนี้จึงควรรวมค่า("remotehost" "root" "/ssh:you@remotehost:")
แปลว่าพร็อกซี /ssh:you@remotehost:
จะถูกใช้เมื่อใดก็ตามที่คุณขอไฟล์เป็นroot@remotehost
.
root
เป็นผู้ใช้เริ่มต้นสำหรับวิธีการเหล่านี้ แต่คุณสามารถเปลี่ยนเป็นผู้ใช้ที่ไม่ใช่รูทได้ด้วย:
C-xC-f /ssh:you@remotehost|sudo:them@remotehost:/path/to/file
RET
ระบุชื่อโฮสต์ระยะไกลอย่างชัดเจนเสมอ
คุณอาจคุ้นเคยกับการใช้sudo::
หรือsu::
และละเว้นชื่อโฮสต์ หากคุณอยู่บน localhost ก็ยังใช้ได้ แต่ถ้าคุณกำลังกระโดดไปยังเซิร์ฟเวอร์ระยะไกลคุณต้องระบุชื่อโฮสต์สำหรับทุกครั้งที่กระโดดแม้ว่าจะเป็นชื่อเดียวกันกับการกระโดดก่อนหน้าก็ตาม ใช้เสมอsudo:hostname:
หรือsu:hostname:
กับโฮสต์ระยะไกลเสมอ
กับดักที่นี่เป็นที่sudo::
ไม่จริงปรากฏไปทำงาน - แต่เมื่อคุณทำอย่างนั้น HOST สำหรับรายการพร็อกซี่แบบไดนามิกจะเป็นชื่อโฮสต์ที่คุณมีต้นกำเนิดมาจากโฮสต์มากกว่าที่คุณเชื่อมต่อกับ สิ่งนี้ไม่เพียง แต่จะดูสับสน (เนื่องจากโฮสต์ที่ไม่ถูกต้องจะแสดงในเส้นทางของไฟล์) แต่ยังหมายความว่าจะมีการพยายามใช้ในภายหลังsudo::
บนโลคัลของคุณในจะถูกพร็อกซีไปยังเซิร์ฟเวอร์ระยะไกลแทน! (และพร็อกซีก็น่าจะถูกปิดกั้นหากคุณทำสิ่งเดียวกันบนเซิร์ฟเวอร์ที่สองทำให้เกิดปัญหาเพิ่มเติม)
ในระยะสั้นอย่าใช้::
เมื่อคุณเล่นหลายฮอป!
Emacs 27+
เริ่มจาก Emacs 27.1 (หรือ Tramp 2.4.2 หากใช้แพ็คเกจ GNU ELPA) ::
เคสจะทำงานอย่างสังหรณ์ใจซึ่ง/ssh:you@remotehost|sudo::
จะกลับมาใช้ใหม่remotehost
แทนที่จะเป็นโฮสต์ภายในของคุณเองดังนั้นคุณจะไม่พบรายการพร็อกซีที่ไม่ถูกต้อง
นอกจากนี้/ssh:you@remotehost|sudo:localhost:
ยังตรวจพบการชอบและตั้งค่าสถานะว่าเป็นข้อผิดพลาดของผู้ใช้
หากคุณมีแนวโน้มที่จะใช้ Emacs ผสมกันรวมถึงเวอร์ชันก่อนหน้า 27 (หรือคุณกำลังแนะนำคนอื่นที่อาจใช้เวอร์ชันเก่ากว่า) การดำเนินการต่อไปจะ::
ปลอดภัยที่สุดหากไม่ปลอดภัยเมื่อทำการกระโดดหลายครั้งเพื่อหลีกเลี่ยง อุบัติเหตุที่อาจเกิดขึ้น (กล่าวคือการระบุโฮสต์ระยะไกลที่ถูกต้องอย่างชัดเจนจะยังคงเป็นแนวทางที่ปลอดภัยที่สุดหากไม่ทราบเวอร์ชัน Tramp)