เซิร์ฟเวอร์ส่วนตัวเครื่องเดียวกันตอบสนองผ่าน VPN ที่ได้รับอนุมัติและผ่าน bastion ที่ได้รับอนุมัติ และคุณต้องการบุ๊กมาร์ก Emacs หนึ่งรายการสำหรับแต่ละเส้นทาง แทนทางลัดที่ต้องเดา การตัดสินใจไม่ใช่ว่าเส้นทางไหนดีกว่า แต่คือเส้นทางไหนได้รับอนุญาตสำหรับงานที่อยู่ตรงหน้าคุณ เก็บทั้งสองอย่างให้ชัดเจน ตั้งชื่อแยกกัน และให้ชื่อไฟล์บอกว่าคุณเลือกอันไหน

เงื่อนไขข้อหนึ่ง: เส้นทางใดได้รับอนุมัติ

jump host ไม่ใช่ทางเลือกอัตโนมัติแทนข้อกำหนด VPN และ VPN ก็ไม่ใช่ใบอนุญาตให้ข้าม bastion ที่ได้รับอนุมัติ ถามว่าเส้นทางใดได้รับอนุญาตสำหรับบัญชีของคุณและสำหรับข้อมูลนี้ หากทั้งสองได้รับอนุมัติ คุณมีทางเลือก หากมีเพียงหนึ่ง ชุดบุ๊กมาร์กจะมีรายการเดียว คำตอบนั้นมาจากเจ้าของข้อมูล ไม่ใช่จากเส้นทางที่บังเอิญใช้งานได้วันนี้

จดคำตอบไว้ เพราะความแตกต่างนี้หายไปอย่างรวดเร็วระหว่างเหตุการณ์

ทั้งสองเส้นทางยังต้องมีการกำหนดค่าบัญชีและตัวตนของตัวเอง alias ที่แชร์กันซึ่งใช้งานผ่านเส้นทางหนึ่งอาจล้มเหลวผ่านอีกเส้นทางด้วยเหตุผลที่ไม่เกี่ยวกับเครือข่ายเลย

เงื่อนไขข้อสอง: คุณตั้งชื่อแต่ละเส้นทางให้แตกต่างได้หรือไม่

การกำหนดค่า SSH สามารถเก็บ alias ของโฮสต์สองรายการสำหรับที่อยู่เดียว แต่ละรายการมีพฤติกรรมพร็อกซีต่างกัน วางบล็อกเฉพาะก่อนไวลด์การ์ดแบบกว้าง เพราะค่าที่ได้มาก่อนจะชนะสำหรับตัวเลือกส่วนใหญ่

Host proj-direct proj-bastion
    HostName 10.60.0.21
    User analyst
    ControlPath none

Host proj-direct
    ProxyJump none

Host proj-bastion
    ProxyJump gw.example.com

ที่อยู่ข้างต้นเป็นเพียงตัวอย่าง เปลี่ยนเป็นที่อยู่ที่ทีมของคุณบันทึกไว้ alias ของการกระโดดยังต้องใช้บัญชีที่ได้รับอนุมัติของ bastion ด้วย ซึ่งมักหมายถึงบล็อก Host ที่สองสำหรับ bastion เอง การปิดการใช้การเชื่อมต่อร่วมกันตรงนี้ทำให้การเปรียบเทียบเส้นทางซื่อตรง เพราะการเชื่อมต่อแบบมัลติเพล็กซ์ที่ถูกใช้ซ้ำอาจมีอายุยืนกว่าการเปลี่ยนเส้นทางที่คุณกำลังพยายามสังเกต

จากนั้นชื่อไฟล์ระยะไกลยังคงแยกจากกันและอ่านได้

/ssh:proj-direct:/srv/project/README.md
/ssh:proj-bastion:/srv/project/README.md

เงื่อนไขข้อสาม: โปรแกรมแก้ไขรู้ความแตกต่างหรือไม่

TRAMP มองชื่อไฟล์สองชื่อนั้นเป็นปลายทางที่ต่างกัน ซึ่งเป็นสิ่งที่คุณต้องการ ทำบุ๊กมาร์กแต่ละรายการภายใต้ชื่อที่บอกว่าใช้เส้นทางใด และเปิดบุ๊กมาร์กอีกครั้งแทนการแก้ความหมายของปลายทางเดียว บุ๊กมาร์กสองรายการยังทำให้การเปรียบเทียบมองเห็นได้ คุณเปิดทั้งสองและดูว่าอันไหนล้มเหลวโดยไม่ต้องเปลี่ยนการกำหนดค่าใด ๆ

มีการตั้งค่าหนึ่งที่ควรให้ความสนใจเมื่อมี ProxyJump คือการแชร์การเชื่อมต่อของ TRAMP ต้องปิดสำหรับการเชื่อมต่อที่เกี่ยวข้อง ดังนั้นตั้งค่า tramp-use-connection-share เป็น nil ก่อนเปิดใช้งาน นี่เป็นการตั้งค่าเพื่อความเข้ากันได้ ไม่ใช่การแก้ไขเส้นทางที่หายไป และไม่ได้ทำให้เส้นทางที่ไม่ได้รับอนุญาตกลายเป็นได้รับอนุญาต คำถามที่พบบ่อยของ TRAMP บันทึกว่าบุ๊กมาร์กเป็นวิธีที่รองรับในการย่อชื่อเหล่านี้

บุ๊กมาร์กที่เปลี่ยนเส้นทางอย่างเงียบ ๆ แย่กว่าไม่มีบุ๊กมาร์กเลย

ทำไมไอคอนเครือข่ายจึงไม่ได้พิสูจน์อะไร

ค่าสถานะโดยรวม 70 ของ NetworkManager หมายความว่าเครื่องมีการเชื่อมต่อทั่วโลก ค่านั้นไม่ได้ระบุชื่อโปรไฟล์ VPN ใด ๆ และ Wi-Fi ทั่วไปก็ทำให้เป็นจริงได้ อุโมงค์ที่จำกัดเฉพาะเครือข่ายส่วนตัวซึ่งบรรทุกเส้นทางที่คุณต้องการพอดีอาจปล่อยค่าที่รวมไว้นั้นไว้ไม่แตะต้อง นั่นคือเหตุผลที่ทางลัดซึ่งผูกกับไอคอนอาจรายงานความพร้อมสำหรับเส้นทางที่มันไม่เคยทดสอบ

อ่านสถานะของการเชื่อมต่อเฉพาะแทนสถานะโดยรวม

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

จะทำอย่างไรเมื่อเส้นทางหยุดทำงาน

บันทึกบัฟเฟอร์ก่อนสืบสวน เพราะเซสชัน TRAMP ที่มีอยู่อาจมีอายุยืนกว่าการเปลี่ยนเส้นทางแล้วล้มเหลวในการเขียนครั้งถัดไป ปิดผ่านการล้างข้อมูลที่รองรับ เปิดบุ๊กมาร์กอีกครั้ง และเปรียบเทียบสองเส้นทางแทนการสันนิษฐานว่าเซิร์ฟเวอร์ล่ม

เปิดการตรวจสอบคีย์โฮสต์ไว้ทั้งสำหรับ bastion และปลายทาง

เส้นทางอื่นไม่ได้ให้สิทธิ์คุณยอมรับคีย์เซิร์ฟเวอร์ที่คุณไม่ได้คาดไว้ และไม่ได้ทำให้เส้นทางที่ไม่ได้รับอนุมัติเป็นที่ยอมรับได้ ทั้งสองเป็นการตัดสินใจแยกจากการตัดสินใจที่คุณกำลังทำ

บทความที่เกี่ยวข้อง