ทำไม openssl s_client ไม่ส่งคีย์ส่วนตัวของฉันไปยัง proxytunnel


1

ขณะนี้ฉันได้ติดตั้ง HAProxy บนพีซีที่บ้านของฉันแล้วและฉันพยายามเข้าถึงผ่านพร็อกซี HTTP ขณะนี้ฉันกำลังเข้าถึงพรอมต์การเข้าสู่ระบบ SSH ดังนี้:

openssl s_client->proxytunnel->HTTP(S) proxy->remote HAProxy->SSH server

ฉันไปถึงจุดที่ฉันได้รับSSH-2.0-OpenSSHพรอมต์ แต่ด้วยเหตุผลบางอย่างมันเพิ่งแฮงค์ที่พรอมต์และไม่ผ่านคีย์ส่วนตัว

ต่อไปนี้เป็นคำสั่งที่ฉันใช้งานฝั่งไคลเอ็นต์และฉันจะตั้งค่าทันเนลของพร็อกซีให้ใช้พร็อกซีขององค์กรได้อย่างไร:

proxytunnel -p httpproxy.organization.com:8080 -d ssh.homeserver.com:443 -a 7000

ต่อไปฉันกำลังทำงานopensslอย่างนั้น:

openssl s_client -connect localhost:7000 -quiet -key /home/user/.ssh/id_rsa

แต่ด้วยเหตุผลบางประการใบรับรองดูเหมือนจะไม่ผ่าน ฉันมักจะพลาดขั้นตอนดังนั้นคำแนะนำใด ๆ จะได้รับการชื่นชมอย่างมาก!


1
ตั้งใจมี -cert แทน -key ในคำสั่ง openssl ... ฉันได้แก้ไขสิ่งนี้แล้ว
slashp

“ บังเอิญมี -cert แทน -key ในคำสั่ง openssl …”สิ่งนี้จะแก้ปัญหาของคุณได้หรือไม่? หรือคุณกำลังชี้ให้เห็นการพิมพ์ผิด?
JakeGould

1
มันไม่ได้แก้ปัญหาฉันพิมพ์ผิดภายในโพสต์ ขอโทษ :).
slashp

คุณเป็น 100% ในเชิงบวกของสิทธิ์บน/home/user/.ssh/id_rsa?
JakeGould

ฉันใช้ 400, 600, และ 700 ทั้งหมดเพื่อประโยชน์
slashp

คำตอบ:


3

คุณกำลังสับสนลูกค้าของสองโปรโตคอลที่แตกต่างกันอย่างสิ้นเชิง

openssl s_clientเครื่องมือหมดจดTLS (SSL)ลูกค้า; มันสามารถลอกเลเยอร์ TLS ที่ HAproxy หรือ stunnel อาจเพิ่ม เมื่อทำเสร็จแล้วมันจะถ่ายโอนข้อมูลโดยพลการจากปลายด้านหนึ่งไปยังอีกด้านหนึ่ง พรอมต์ที่คุณเห็นคือการจับมือ SSH เริ่มต้นและเซิร์ฟเวอร์คาดหวังให้คุณตอบกลับ ดังนั้นคุณยังคงต้องเรียกใช้โปรแกรมเช่นsshที่จะพูดคุยโปรโตคอลSSHที่ด้านบนของอุโมงค์ TLS

โดยปกติจะsshเชื่อมต่อกับเซิร์ฟเวอร์ผ่าน TCP โดยตรง แต่คุณสามารถใช้ProxyCommandตัวเลือกบอกให้ผ่านโปรแกรมอื่น:

ssh -o ProxyCommand="openssl s_client -connect localhost:7000 -quiet" dummyname

หากคุณมี SSH Keypair คุณจะต้องระบุเป็นตัวเลือกsshเช่นกัน:

ssh -i ~/.ssh/id_workplace -o ProxyCommand.....

(ไม่จำเป็นต้องทำสิ่งนี้เพื่อ~/.ssh/id_rsa- ใช้เป็นค่าเริ่มต้น)


ตัวเลือก s_client -certและ-keyแน่นอนสำหรับการตรวจสอบสิทธิ์ไปยังเซิร์ฟเวอร์ TLS อย่างไรก็ตามพวกเขาต้องการใบรับรอง X.509 ฉบับเต็มในชื่อ "-cert"; แค่กุญแจสาธารณะก็ยังไม่เพียงพอเพราะมันจะใช้กับ SSH


grawity ฉันกำลังทำสิ่งเล็ก ๆ น้อย ๆ ที่นี่ในตอนแรก - ฉันได้ทำตามคำแนะนำนี้blog.chmd.fr/ขณะที่พร็อกซีบล็อก SSH ขาออกดังนั้นฉันจึงพยายามที่จะแค็ปซูลใน SSL ฉันสามารถเข้าถึงคอนโซล SSH ของฉันโดยไม่ใช้พร็อกซี HTTP ในสถานที่เพียงแค่ใช้ ProxyCommand ภายในไฟล์การกำหนดค่า ssh ... ฉันพยายามหลีกเลี่ยงความจริงที่ว่าฉันไม่ทราบวิธีสั่ง opensl ผ่านพร็อกซีโดยไม่ต้อง proxytunnel .... ฉันแน่ใจว่าฉันสับสนเล็กน้อย แต่เข้าใจในสิ่งที่ฉันพูด
slashp

ดีจัง! ดูเหมือนว่าฉันเข้าใจแล้ว! จำเป็นต้องใช้ socat เพื่อเชื่อมการเชื่อมต่อเช่นนั้น: socat TCP-LISTEN: 8888 OPENSSL: localhost: 7000, ตรวจสอบ = 0, จากนั้นเชื่อมต่อโดยใช้ SSH เช่น: ssh -i /home/user/.ssh/id_rsa user@127.0.0.1 -p 8888. มีปัญหากับการเชื่อมต่อลดลงอย่างรวดเร็ว แต่ฉันคิดว่าฉันสามารถหามันได้
slashp
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.