OpenSSH ปิดการใช้งาน ControlMaster สำหรับชื่อโฮสต์ที่กำหนด


20

ฉันใช้OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011กับ Mac OS X Snow Leopard ฉันมีControlMasterฟีเจอร์ที่กำหนดค่าเพื่อรักษาการเชื่อมต่อแบบถาวร ฉัน~/.ssh/configมีดังต่อไปนี้:

Host *
  ControlPath /ms/%r@%h:%p
  ControlMaster auto
  ControlPersist 4h

Host *.unfuddle.com
  ControlMaster no

อย่างไรก็ตามจากสิ่งที่ฉันเห็น - แม้ว่าฉันกำลังพยายามใช้ SSH สำหรับโฮสต์ unfuddle.com การเชื่อมต่อหลักจะถูกสร้างขึ้นเสมอ:

[andrey-mbp ~] $ ssh -v git@droolit.unfuddle.com
OpenSSH_5.9p1, OpenSSL 0.9.8r 8 กุมภาพันธ์ 2554
debug1: กำลังอ่านข้อมูลการกำหนดค่า /Users/akhkharu/.ssh/config
debug1: /Users/akhkharu/.ssh/config บรรทัดที่ 1: การใช้ตัวเลือกสำหรับ *
debug1: /Users/akhkharu/.ssh/config บรรทัดที่ 6: การใช้ตัวเลือกสำหรับ * .unfuddle.com
debug1: การอ่านข้อมูลการกำหนดค่า /usr/local/Cellar/openssh/5.9p1/etc/ssh_config
debug1: auto-mux: กำลังลองต้นแบบที่มีอยู่
debug1: ไม่มีซ็อกเก็ตควบคุม "/ms/git@droolit.unfuddle.com:22"
debug1: กำลังเชื่อมต่อไปยัง droolit.unfuddle.com [174.129.5.196] พอร์ต 22
debug1: สร้างการเชื่อมต่อแล้ว
debug1: ไฟล์ข้อมูลประจำตัว /Users/akhkharu/.ssh/id_rsa ประเภท 1
debug1: ไฟล์ข้อมูลประจำตัว /Users/akhkharu/.ssh/id_rsa-cert ประเภท -1
debug1: ไฟล์ข้อมูลประจำตัว /Users/akhkharu/.ssh/id_dsa ประเภท 2
debug1: ไฟล์ข้อมูลประจำตัว /Users/akhkharu/.ssh/id_dsa-cert ประเภท -1
debug1: ไฟล์ข้อมูลประจำตัว /Users/akhkharu/.ssh/id_ecdsa ประเภท -1
debug1: ไฟล์ข้อมูลประจำตัว /Users/akhkharu/.ssh/id_ecdsa-cert ประเภท -1
debug1: โปรโตคอลระยะไกลรุ่น 2.0, รุ่นซอฟต์แวร์ระยะไกล OpenSSH_5.8
debug1: การแข่งขัน: OpenSSH_5.8 pat OpenSSH *
debug1: การเปิดใช้งานโหมดความเข้ากันได้สำหรับโปรโตคอล 2.0
debug1: สตริงรุ่นท้องถิ่น SSH-2.0-OpenSSH_5.9
debug1: SSH2_MSG_KEXINIT ส่งแล้ว
debug1: ได้รับ SSH2_MSG_KEXINIT
debug1: kex: server-> client aes128-ctr hmac-md5 ไม่มี
debug1: kex: client-> เซิร์ฟเวอร์ aes128-ctr hmac-md5 ไม่มี
debug1: ส่ง SSH2_MSG_KEX_ECDH_INIT
debug1: ต้องการ SSH2_MSG_KEX_ECDH_REPLY
debug1: เซิร์ฟเวอร์โฮสต์คีย์: RSA a6: 74: 33: 36: 95: 31: 6e: a6: d7: 71: 87: b8: 3c: 38: e2: 60
debug1: โฮสต์ 'droolit.unfuddle.com' เป็นที่รู้จักและตรงกับคีย์โฮสต์ RSA
debug1: พบคีย์ใน /Users/akhkharu/.ssh/known_hosts:390
debug1: ssh_rsa_verify: ลายเซ็นถูกต้อง
debug1: SSH2_MSG_NEWKEYS ส่งแล้ว
debug1: ต้องการ SSH2_MSG_NEWKEYS
debug1: ได้รับ SSH2_MSG_NEWKEYS แล้ว
debug1: เซิร์ฟเวอร์ไม่อนุญาตการข้ามเครือข่าย
debug1: SSH2_MSG_SERVICE_REQUEST ส่งแล้ว
debug1: ได้รับ SSH2_MSG_SERVICE_ACCEPT
debug1: การรับรองความถูกต้องที่สามารถดำเนินการต่อได้: publickey
debug1: วิธีการรับรองความถูกต้องถัดไป: publickey
debug1: การเสนอคีย์สาธารณะ RSA: /Users/akhkharu/.ssh/id_rsa
debug1: เซิร์ฟเวอร์ยอมรับรหัส: pkalg ssh-rsa blen 277
debug1: รับรองความถูกต้องสำเร็จ (publickey)
รับรองความถูกต้องไปที่ droolit.unfuddle.com ([174.129.5.196]: 22)
debug1: การตั้งค่าซ็อกเก็ตมัลติเพล็กซ์
debug1: channel 0: new [/ms/git@droolit.unfuddle.com:22]
debug1: control_persist_detach: กระบวนการต้นแบบพื้นหลัง
debug1: การฟอร์กเป็นพื้นหลัง
debug1: การเข้าสู่เซสชันแบบโต้ตอบ
debug1: การเชื่อมต่อการควบคุมมัลติเพล็กซ์
debug1: ช่องที่ 1: ใหม่ [mux-control]
debug1: channel 2: new [client-session]
debug1: Remote: คำสั่งบังคับ
debug1: ระยะไกล: การส่งต่อพอร์ตถูกปิดใช้งาน
debug1: ระยะไกล: การส่งต่อ X11 ถูกปิดใช้งาน
debug1: ระยะไกล: การส่งต่อตัวแทนปิดการใช้งาน
debug1: ระยะไกล: การจัดสรร Pty ถูกปิดใช้งาน
debug1: Remote: คำสั่งบังคับ
debug1: ระยะไกล: การส่งต่อพอร์ตถูกปิดใช้งาน
debug1: ระยะไกล: การส่งต่อ X11 ถูกปิดใช้งาน
debug1: ระยะไกล: การส่งต่อตัวแทนปิดการใช้งาน
debug1: ระยะไกล: การจัดสรร Pty ถูกปิดใช้งาน
debug1: mux_client_request_session: รหัสเซสชันหลัก: 2
คำขอจัดสรร PTY ล้มเหลว
ต้องการ SSH_ORIGINAL_COMMAND
debug1: client_input_channel_req: channel 2 rtype exit-status การตอบกลับ 0
debug1: client_input_channel_req: ช่องทาง 2 rtype eow@openssh.com ตอบกลับ 0
debug1: แชนเนล 2: ฟรี: ไคลเอ็นต์เซสชัน, nchannels 3
debug1: ช่องที่ 1: ฟรี: mux-control, nchannels 2
การเชื่อมต่อที่ใช้ร่วมกันกับ droolit.unfuddle.com ถูกปิด
[andrey-mbp ~] $ ll / ms /
รวม 0
srw ------- 1 akhkharu ผู้ดูแลระบบ 0B 17 ก.ค. 11:55 git@droolit.unfuddle.com: 22

ขอบคุณ
Andrey

คำตอบ:


19

*บาทโฮสต์ของคุณกำลังจับมันอยู่ วาง stanzas โฮสต์เฉพาะเจาะจงไว้ก่อนหน้านี้


ขอบคุณ แต่นั่นไม่ได้ผลสำหรับฉัน ฉันต้องเปิดใช้งาน ControlMaster สำหรับโฮสต์ทั้งหมด แต่ไม่ใช่สำหรับ unfuddle.com ฉันไม่สามารถแสดงรายการโฮสต์ทั้งหมดที่ฉันใช้ในไฟล์กำหนดค่า สิ่งที่ดูเหมือนจะใช้งานได้คือการวางกฎของ unfuddle.com ไว้ตั้งแต่ต้น
Andrey Chernih

8
คุณหมายถึง ... เมื่อคุณใส่ stanza โฮสต์ที่เฉพาะเจาะจงก่อนหน้า
Ignacio Vazquez-Abrams

ใช่มันแปลก แต่ใช้งานได้
Andrey Chernih

ฉันค้นหามานานหลายปีแล้ว แต่มันเป็นเรื่องสำคัญอันดับหนึ่ง!
JanKanis

1
ฉันเกรงว่าฉันจะสงสัยจนกระทั่งวันตายของฉันถ้า Andrey เคยเห็นความจริงที่ว่าคำตอบนี้ถูกต้องและความคิดเห็นที่เขาเห็นด้วยกับประเด็นที่ออกมา
vastlysuperiorman

10

ตามที่อธิบายไว้ในคำตอบของคำถามที่คล้ายกันของฉันใน SuperUserคุณสามารถใช้ไวยากรณ์ "bang" เพื่อแยกโฮสต์ที่เฉพาะเจาะจงจากHost *stanza ดั้งเดิมดังนี้:

Host * !*.unfuddle.com
    ControlPath /ms/%r@%h:%p
    ControlMaster auto
    ControlPersist 4h

ในสถานการณ์ของฉันฉันพบว่าลำดับของHostส่วนเมื่อใช้Host *ดูเหมือนจะไม่เกี่ยวข้อง แต่วิธีการดังกล่าวใช้งานได้เสมอ


5

สำหรับฉันมันทำงานเมื่อฉันยังตั้งค่าControlPathการnoneภายในhostฉันท์

คุณสามารถลอง:

Host *.unfuddle.com   
    ControlMaster no
    ControlPath none

จากนั้นจะไม่มีการสร้างเซสชันการควบคุม


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