วิธีปิดใช้งานการส่งต่อโลคัลชั่วคราว


13

ฉันมีใน~/.ssh/configรายการไฟล์ของฉันด้วยคำจำกัดความการส่งต่อท้องถิ่นเช่น

HOST myServer
   hostname 10.10.0.1
   user xyz
   LocalForward 8080 localhost:80
   LocalForward 4000 127.0.0.1:4000
   ...

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

bind: Address already in use
channel_setup_fwd_listener_tcpip: cannot listen to port: 8080
bind: Address already in use
channel_setup_fwd_listener_tcpip: cannot listen to port: 4000
....

มีวิธีใช้อย่างเป็นระเบียบsshหรือrsyncมีตัวเลือกให้ปิดใช้งานการส่งต่อภายในเครื่องทั้งหมดสำหรับเซสชันหรือไม่

เห็นได้ชัดว่าฉันสามารถคัดลอกและวางแต่ละบล็อกการกำหนดค่าและสร้างหนึ่งด้วยและหนึ่งโดยไม่ต้องส่งต่อท้องถิ่น แต่ฉันหวังว่าจะมีทางออกที่ดีกว่า

คำตอบ:


14

มีClearAllForwardingsตัวเลือกในssh_configซึ่งทำสิ่งที่คุณต้องการ:

ClearAllForwardings

ระบุว่าการส่งต่อโลคัลรีโมตและไดนามิกพอร์ตทั้งหมดที่ระบุในไฟล์คอนฟิกูเรชันหรือบนบรรทัดรับคำสั่งจะถูกล้าง ตัวเลือกนี้มีประโยชน์หลักเมื่อใช้จากบรรทัดคำสั่ง ssh (1) เพื่อล้างการส่งต่อพอร์ตที่ตั้งค่าในไฟล์กำหนดค่าและตั้งค่าโดยอัตโนมัติโดย scp (1) และ sftp (1) อาร์กิวเมนต์ต้องเป็นใช่หรือไม่ใช่ (ค่าเริ่มต้น)

คุณสามารถใช้มันเป็นตัวเลือก commandline:

ssh -o ClearAllForwardings=yes host

ที่สมบูรณ์แบบ - ผมคิดว่าผมต้องอ่านเอกสารอย่างรอบคอบพอ
Jeb

2
ในกรณีที่ใคร ๆ ก็ต้องการสิ่งนี้ด้วยgit:GIT_SSH_COMMAND="/usr/bin/ssh -o ClearAllForwardings=yes"
user1338062

ไม่แน่นอนRemoteForward=no- ซึ่งเป็นสิ่งที่ฉันกำลังค้นหาเมื่อค้นหาคำตอบเดียวกัน
DouglasDD

สิ่งนี้จะไม่แสดงข้อความWarning: remote port forwarding failed for listen port XYZเมื่อมีการเชื่อมต่อแล้ว
Jan

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