หยุดการกำหนดค่า ssh ในนัดแรก


18

ฉันได้เพิ่มพร็อกซีในพื้นที่สำหรับโฮสต์ทั้งหมดของฉันในการกำหนดค่า. ssh ของฉันอย่างไรก็ตามฉันต้องการเชลล์ลงใน vm โลคัลของฉันโดยไม่มีคำสั่งพร็อกซี ผลลัพธ์ของความพยายามของฉัน ssh:

debug1: /Users/bbarbour/.ssh/config line 1: Applying options for local.dev
debug1: /Users/bbarbour/.ssh/config line 65: Applying options for *

กำหนด ssh config ต่อไปนี้ฉันจะป้องกัน ProxyCommand จากการนำไปใช้กับรายการ local.dev ได้อย่างไร?

Host local.dev
    HostName dev.myserver.com
    User developer
...
Host *
    ProxyCommand /usr/local/bin/corkscrew 127.0.0.1 8840 %h %p

คำตอบ:


22

คุณสามารถยกเว้น local.dev จาก ProxyCommand โดยใช้!ก่อนหน้า:

Host * !local.dev
    ProxyCommand /usr/local/bin/corkscrew 127.0.0.1 8840 %h %p

จากเอกสารssh_config :

หากมีมากกว่าหนึ่งรูปแบบรูปแบบเหล่านั้นควรถูกคั่นด้วยช่องว่าง

รายการรูปแบบอาจจะเมื่อตะกี้ prefixing ด้วยเครื่องหมายอัศเจรีย์ ( `! ') หากรายการที่ถูกทำให้ตรงกันถูกจับคู่รายการโฮสต์จะถูกละเว้นโดยไม่คำนึงว่ารูปแบบอื่น ๆ ของการจับคู่บรรทัด การแข่งขันที่ถูกลบจึงมีประโยชน์ในการมอบข้อยกเว้นสำหรับการแข่งขันไวด์การ์ด

เอกสารดังกล่าวยังกล่าวอีกว่า:

สำหรับแต่ละพารามิเตอร์ค่าที่ได้รับครั้งแรกที่จะนำมาใช้ ไฟล์การกำหนดค่าประกอบด้วยส่วนที่คั่นด้วยข้อมูลจำเพาะ `` โฮสต์ '' และส่วนนั้นจะใช้กับโฮสต์ที่ตรงกับหนึ่งในรูปแบบที่กำหนดในข้อกำหนด ชื่อโฮสต์ที่ตรงกันคือชื่อที่ให้ในบรรทัดคำสั่ง

ดังนั้นคุณยังสามารถปิดใช้งาน ProxyCommand สำหรับ local.dev ด้วยค่าการแทนที่ที่คุณกำหนดไว้ในHost *:

Host local.dev
    HostName dev.myserver.com
    User developer
    ProxyCommand none

8

ตัวเลือกในไฟล์กำหนดค่าจะถูกนำไปใช้ในครั้งแรกที่ตรงกัน เนื่องจากคุณไม่มี ProxyCommand ในรายการโฮสต์จึง*จะใช้รายการในรายการของคุณ

มีสองวิธีในการแก้ไขปัญหานี้:

  • สำหรับโฮสต์ที่คุณไม่ต้องการใช้คำสั่ง proxy เพียงเพิ่มบรรทัด
    ProxyCommand none
  • สำหรับ*รายการโปรดทราบว่ารายการไม่ควรใช้กับโฮสต์local.devโดยปฏิเสธด้วย a!
    โฮสต์! local.dev *

เพื่อแยกหลายโฮสต์ใช้พื้นที่ เครื่องหมายจุลภาค (,) ไม่ทำงานสำหรับฉัน รหัสผู้จัดจำหน่าย: Ubuntu คำอธิบาย: Ubuntu 17.10 การวางจำหน่าย: 17.10 ชื่อรหัส: artful
Aruna

ขอบคุณ @ArunaFromLK - ฉันไม่อยากจะเชื่อเลยว่าฉันพลาดไปและไม่มีใครเห็นมันในอีก 3,5 ปี! ฉันได้อัพเดตคำตอบแล้ว
Jenny D
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.