Regexp ใน. ssh / config


12

ที่ทำงานฉันมักจะต้องเข้าสู่โฮสต์ที่เป็นไปตามรูปแบบการตั้งชื่อทั่วไปเช่นqc01- qc12, hc01- hc10และอื่น ๆ .ssh/configทั้งหมดของความต้องการเหล่านี้จะได้รับค่าคอนฟิกเดียวกันในแล็ปท็อปของฉัน แน่นอนว่าฉันสามารถใช้รายการสำหรับโฮสต์qc*และhc*แต่ฉันสงสัยว่าถ้าเป็นไปได้หรือไม่ที่จะใช้นิพจน์ทั่วไป

คำตอบ:


11

เนื่องจากGelraen ที่ระบุไว้เป็นค่าเริ่มต้นssh_configจะไม่สนับสนุนนิพจน์ทั่วไป แต่คุณสามารถลองทำสิ่งที่แตกต่างเช่น:


4

โปรดดูในหัวข้อPATTERNSman ssh_config

คำตอบที่ยาวคือ: ไม่คุณทำไม่ได้นอกจากว่าคุณจะแก้ไขsshเพื่อสนับสนุน


man ssh_configฉันไม่สามารถหาในส่วนนี้ของฉัน
Patryk


รุ่นใดที่ปรากฏขึ้น
vonbrand

3

ssh_configคุณสามารถใช้นิพจน์ปกติเต็มรูปแบบในของคุณ

เอกสารที่เกี่ยวข้องคือ IMO ที่อ่านและเข้าใจได้ยากมาก ฉันเข้าใจมันเพราะผมมีประสบการณ์ 13 ปีขึ้นไปและ Linux และ 8 ปี + sshใช้ ดังนั้นนี่คือบทสรุปของเอกสารของฉัน:

  • man ssh_config อธิบายคุณสมบัติที่เรียกว่า Match
  • มีคุณสมบัติที่เรียกว่าexecให้คุณใช้คำสั่งเชลล์โดยพลการสำหรับการกำหนดการแข่งขัน
  • การส่งผ่านพารามิเตอร์อินพุตไปยังคำสั่งเชลล์ที่เป็นไปได้และอธิบายไว้ในส่วนที่มีเลเบล TOKENS

ในกรณีของฉันฉันลงเอยด้วยการใช้ในของฉัน~/.ssh/config :

Match exec "echo %h | grep -q 'NAME[0-9]\+$'"
    User USER
    IdentityFile /path/to/identity/file
    Hostname %h.fully.qualified.domain.name

การทดสอบจะต้องทำสิ่งที่ยุ่งยากเช่นนี้ ssh -vvv HOSTNAMEและจะทำอย่างไรที่การทดสอบที่คุณเรียก ซึ่งจะแสดงสิ่งที่เกิดขึ้นและสิ่งที่คุณMatchใช้งานใหม่ถูกต้องหรือไม่


0

ขยายคำตอบจาก Trevor:

โฮสต์ที่ซับซ้อนมากขึ้นก็เป็นไปได้เช่นการจับคู่foo123.123และfoo10.10ในกฎเดียวโดยไม่มีรายการ DNS สำหรับชื่อโฮสต์ที่ใช้:

Match exec "echo %h | grep -q 'foo[0-9]\+.[0-9]\+$'"
    Port 1234 # just to show it can be paired with non-default ports too,
              # see %p in man ssh_config
    ProxyCommand /usr/bin/nc 10.10.$(echo %h | sed -e 's/foo//') %p

ใช้ ProxyCommand เพื่อจัดการเนื้อหาของ% h ด้วยเชลล์และเชื่อมต่อกับพอร์ตที่ถูกต้องผ่าน netcat วิธีนี้คุณสามารถสร้างสถานีที่ตั้งไว้ล่วงหน้าสำหรับหมวดหมู่ของโฮสต์โดยไม่ต้องสร้างแต่ละรายการ

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