ฉันได้สร้างบริการ SSH Tunneling ที่ทำงานในคอนเทนเนอร์แบบ Alpine ตามแนวทางที่อธิบายไว้ที่นี่: https://github.com/cagataygurturk/docker-ssh-tunnel
บริการเชื่อมต่อผ่าน IdentityFiles และตั้งค่า ControlSockets และช่องสัญญาณหลายช่อง
ฉันกำลังทดสอบสิ่งนี้กับป้อมปราการของ Amazon Linux โดยเจาะผ่านไปยังฐานข้อมูล PostgreSQL
การเข้าสู่ระบบ SSH และการสร้างทันเนลนั้นถูกต้อง และสามารถใช้ทันเนลได้ แต่ดูเหมือนว่าจะมีการหมดเวลาที่ไหนสักแห่ง
- หากเป็นอุโมงค์ - อาจเป็นการเชื่อมต่อกับเซิร์ฟเวอร์ SSH เป้าหมายโดยรวมหรือไม่ - ไม่มีการใช้งานเป็นเวลา 5 นาทีแล้วเชื่อมต่อ กระบวนการเชื่อมต่อหยุดทำงานเป็นเวลา 30 วินาทีก่อนที่จะดำเนินการต่อได้สำเร็จ
- การเชื่อมต่ออุโมงค์หลังจากการเชื่อมต่อครั้งแรกนั้นรวดเร็ว - เสี้ยววินาที
- ปล่อยให้ช่องสัญญาณ/เซิร์ฟเวอร์ว่างเป็นเวลา 5 นาที และการหน่วงเวลา 30 วินาทีจะกลับมา
นี่คือหลักฐาน:
ไคลเอ็นต์ ssh-config
เจ้าภาพป้อมปราการของฉัน
ชื่อโฮสต์ 99.99.99.99
ผู้ใช้ ec2-ผู้ใช้
IdentityFile ~/.ssh/key.pem
เจ้าภาพ *
อัตโนมัติ ControlMaster
เส้นทางการควบคุม ~/.ssh/controlmasters/cp_%r_%h
ControlPersist ใช่
StrictHostKeyกำลังตรวจสอบหมายเลข
ServerAliveCountสูงสุด 60
ServerAliveInterval 30
TCPKeepAlive หมายเลข
ForkAfterAuthentication ใช่
StdinNull ใช่
ExitOnForwardFailure ใช่
IPQoS 0x00
ทดสอบเวิร์กโฟลว์
อุโมงค์ที่สร้างขึ้นก่อนหน้านี้โดยใช้ ControlSocket
การทดสอบด้วยคำขอ psql ที่ไม่ผ่านการรับรองความถูกต้อง แต่ใช้ช่องสัญญาณ
psql ทำการเชื่อมต่อ 2 ครั้งผ่านอุโมงค์ระหว่างการทดสอบ
เข้าถึงครั้งแรกหลังจากไม่ได้ใช้งานอย่างน้อย 5 นาที
# วันที่ && เวลา psql "host=localhost port=5430 dbname=xxx user=UUU password=X"
อ. 8 มี.ค. 12:10:57 PST 2022
psql: ข้อผิดพลาด: FATAL: การตรวจสอบรหัสผ่านล้มเหลวสำหรับผู้ใช้ "UUU"
FATAL: การตรวจสอบรหัสผ่านล้มเหลวสำหรับผู้ใช้ "UUU"
0m32.497s จริง - ช้า!
บันทึกไคลเอ็นต์ SSH -vv
คำขอ psql ครั้งที่ 1
[2022-03-08 20:10:57] debug1: ขอการเชื่อมต่อกับพอร์ต 5430 ที่ส่งต่อไปยัง xxx.us-east-1.rds.amazonaws.com พอร์ต 5432
[2022-03-08 20:10:57] debug1: ช่อง 3: ใหม่ [direct-tcpip]
หน่วงเวลา 30 วินาทีที่นี่
[2022-03-08 20:10:57] debug2: ช่อง 3: เปิด ยืนยัน rwindow 2097152 rmax 32768
[2022-03-08 20:11:29] debug2: ช่อง 3: อ่าน<=0 rfd 7 เลนส์ 0
คำขอ psql ครั้งที่ 2
[2022-03-08 20:11:29] debug1: ขอการเชื่อมต่อกับพอร์ต 5430 ที่ส่งต่อไปยัง xxx.us-east-1.rds.amazonaws.com พอร์ต 5432
[2022-03-08 20:11:29] debug1: ช่อง 4: ใหม่ [direct-tcpip]
การตอบสนองย่อยที่สองในช่อง 4
[2022-03-08 20:11:29] debug2: ช่อง 4: เปิด ยืนยัน rwindow 2097152 rmax 32768
[2022-03-08 20:11:29] debug2: ช่อง 4: อ่าน<=0 rfd 8 เลนส์ 0
เข้าได้ทันทีหลังวันที่ 1
# วันที่ && เวลา psql "host=localhost port=5430 dbname=xxx user=UUU password=X"
อ. 8 มี.ค. 12:11:41 PST 2022
psql: ข้อผิดพลาด: FATAL: การตรวจสอบรหัสผ่านล้มเหลวสำหรับผู้ใช้ "UUU"
FATAL: การตรวจสอบรหัสผ่านล้มเหลวสำหรับผู้ใช้ "UUU"
0m0.874s จริง - เร็ว!
ผู้ใช้ 0m0.021s
sys 0m0.016s
คำขอ psql ครั้งที่ 1
[2022-03-08 20:11:41] debug1: ขอการเชื่อมต่อกับพอร์ต 5430 ที่ส่งต่อไปยัง xxx.us-east-1.rds.amazonaws.com พอร์ต 5432
[2022-03-08 20:11:41] debug2: fd 7 การตั้งค่า TCP_NODELAY
[2022-03-08 20:11:41] debug2: fd 7 ตั้งค่า O_NONBLOCK
[2022-03-08 20:11:41] debug1: ช่อง 3: ใหม่ [direct-tcpip]
การตอบสนองรองต่อคำขอ
[2022-03-08 20:11:41] debug2: ช่อง 3: เปิด ยืนยัน rwindow 2097152 rmax 32768
[2022-03-08 20:11:42] debug2: ช่อง 3: อ่าน<=0 rfd 7 เลนส์ 0
...
คำขอ psql ครั้งที่ 2
[2022-03-08 20:11:42] debug1: ขอการเชื่อมต่อกับพอร์ต 5430 ที่ส่งต่อไปยัง xxx.us-east-1.rds.amazonaws.com พอร์ต 5432
[2022-03-08 20:11:42] debug1: ช่อง 4: ใหม่ [direct-tcpip]
[2022-03-08 20:11:42] debug2: ช่อง 4: เปิด rwindow ยืนยัน 2097152 rmax 32768
ฉันได้ค้นหาผู้อื่นที่มีปัญหานี้ แต่ไม่พบปัญหานี้ที่กำลังพูดถึง ฉันได้ลองคำแนะนำจาก https://jrs-s.net/2017/07/01/slow-ssh-logins/ และตั้งค่า IpQos=0x00 เพื่อแก้ไขปัญหาเราเตอร์ที่อาจเกิดขึ้น