ฉันกำลังพยายามปรับใช้คอนเทนเนอร์โดยใช้ นักเทียบท่าเขียน
ไปยังเซิร์ฟเวอร์ระยะไกลผ่าน SSHSSH เซิร์ฟเวอร์ระยะไกลสามารถเข้าถึงได้ผ่านพร็อกซี SOCKS เท่านั้น ฉันสร้าง ~/.ssh/config
ด้วยการกำหนดค่า SOCKS ที่ถูกต้องสำหรับสิ่งนั้น:
โฮสต์ <my.host>
ชื่อโฮสต์ <my.host>
ProxyCommand เชื่อมต่อถุงเท้า -S <socks-user>@<socks-host>:<socks-port> %h %p
พอร์ต <ssh-พอร์ต>
ผู้ใช้ <ผู้ใช้ ssh>
IdentityFile ~/.ssh/<ssh-key>
การกำหนดค่านี้ทำงานได้ดี: ฉันสามารถเชื่อมต่อผ่านพร็อกซีโดยใช้ ssh <my.host>
สั่งการ.
จากนั้นฉันสร้างบริบท Docker และทดสอบ:
$ บริบทนักเทียบท่าสร้างระยะไกล --docker "host=ssh://<my.host>"
$ นักเทียบท่า --context=remote ps
<รายการคอนเทนเนอร์ที่กำลังรันอยู่บนรีโมตโฮสต์>
แต่เมื่อฉันพยายามใช้บริบทนี้กับ นักเทียบท่าเขียน
มันล้มเหลวโดยมีข้อผิดพลาด:
$ docker-compose --context=remote --verbose ps
ข้อผิดพลาด: ได้รับการตอบสนองข้อผิดพลาดจากเซิร์ฟเวอร์ SOCKS: 4 (โฮสต์ไม่สามารถเข้าถึงได้)
FATAL: ไม่สามารถเริ่มถ่ายทอดผ่าน SOCKS
kex_exchange_identification: การเชื่อมต่อถูกปิดโดยโฮสต์ระยะไกล
นอกจากนี้ฉันลองใช้ DOCKER_HOST
สภาพแวดล้อม แต่มีข้อผิดพลาดเดียวกัน: env DOCKER_HOST="ssh://<my-host>" docker-compose ps
.
ดังนั้นดูเหมือนว่าปัญหาอยู่ใน นักเทียบท่าเขียน
เพราะบริสุทธิ์ นักเทียบท่า
คำสั่งทำงานได้อย่างถูกต้อง มีปัญหาอะไรเกิดขึ้นที่นี่ และฉันจะแก้ไขพฤติกรรมนี้ได้อย่างไร
เวอร์ชันไคลเอ็นต์นักเทียบท่า: 20.10.7
รุ่นเซิร์ฟเวอร์นักเทียบท่า (ระยะไกล): 19.03.12
เวอร์ชันที่เขียนโดยนักเทียบท่า: 1.29.2