วิธีการตรวจสอบเหตุผลสำหรับท่อหัก SSH


0

ตลอดสัปดาห์ที่ผ่านมาการเชื่อมต่อ SSH ของฉันกับอินสแตนซ์ Amazon EC2 ยังคงถูกตัดการเชื่อมต่อ

การเขียนล้มเหลว: ไปป์ที่ขาด

อ่านผ่านเว็บไซต์ไม่กี่ฉันคิดว่ามันเป็นเพราะไม่มีการตั้งค่าหมดเวลาดังนั้นฉันจึงสร้าง ~/.ssh/config ไฟล์ดังต่อไปนี้ขึ้นอยู่กับ

### Stop timing out connections
ServerAliveInterval 120  
ServerAliveCountMax 20  

TCPKeepAlive yes

### SSH Connection pooling for faster additional connections to a machine
ControlMaster auto  
ControlPath /tmp/ssh_mux_%h_%p_%r

Host *  
  ControlMaster auto  
  ControlPath ~/.ssh/control/%r@%h:%p  
  ControlPersist 3600  

### Make it so ssh-ing from one server to another passes keys around automagically
Host *
ForwardAgent yes

### Get rid of SSH connection delays
GSSAPIAuthentication no

### Use less encryption on servers I cant get to off-network
Host 10.* 172.* 192.168.*  
Ciphers blowfish-cbc

ดูเหมือนว่าการตั้งค่าเหล่านี้จะไม่มีผล แต่ฉันก็รู้ว่าเมื่อฉัน ไม่ ที่บ้านการเชื่อมต่อไม่ได้ใช้งานเหมือนปีที่ผ่านมา ฉันได้เข้าสู่เครือข่ายสองเครือข่ายอื่นนอกเหนือจาก Wifi ที่บ้านของฉันดังนั้นฉันเดาว่ามีบางอย่างที่เกิดขึ้นที่บ้านในสองสัปดาห์ที่ผ่านมาเพื่อเปลี่ยนวิธีการเชื่อมต่อ SSH

การใช้ Wireshark หรือฉันจะติดตาม / วินิจฉัยว่าท่อ SSH ที่ชำรุดเกิดขึ้นได้อย่างไรในเครือข่ายภายในบ้านของฉัน

การใช้

  • Mac OS 10.7.5
  • OpenSSH_5.6p1, OpenSSL 0.9.8r 8 กุมภาพันธ์ 2554
  • Amazon EC2 AMI t1.micro

คำตอบ:


1

ตรวจสอบการตั้งค่าในเครื่องของ mac นี่เป็นของฉัน ... :

sysctl -a | grep tcp.keep
net.inet.tcp.keepidle: 3600
net.inet.tcp.keepintvl: 150
net.inet.tcp.keepinit: 75000
net.inet.tcp.keepcnt: 8

ฉันต้องการเปลี่ยนการตั้งค่า keepintvl เป็นค่าที่สูงกว่า:

sudo sysctl -w net.inet.tcp.keepintvl=7500

จากนั้นข้อผิดพลาด ssh "การเขียนล้มเหลว: Broken pipe" หายไป


0

คุณไม่ได้ระบุว่าระบบปฏิบัติการกำลังทำงานอยู่บนอินสแตนซ์ EC2 ของคุณ สมมติว่ามันเป็นตัวแปรของ linux

สิ่งแรกที่คุณควรทำคือเพิ่มจำนวนการบันทึก SSHD ของคุณ คุณมีสองวิธีในการทำเช่นนี้ คุณสามารถเปลี่ยนตัวเลือกเพื่อให้ SSHD เริ่มต้นด้วยการดีบักแฟล็กเสมอหรือคุณสามารถเริ่มต้นอินสแตนซ์อื่นบนพอร์ตที่ไม่ได้มาตรฐาน ไม่ว่าจะด้วยวิธีใดความลับในการรับเอาต์พุตดีบักคือการใช้ -d จากหน้า man บนเซิร์ฟเวอร์ Mint (ตัวแปร Ubuntu)

โหมดดีบัก -d เซิร์ฟเวอร์ส่งเอาต์พุตการดีบักแบบ verbose ไปยังข้อผิดพลาดมาตรฐานและไม่ทำให้ตัวเองอยู่ในพื้นหลัง เซิร์ฟเวอร์จะไม่แยก                  และจะประมวลผลการเชื่อมต่อเดียวเท่านั้น ตัวเลือกนี้มีไว้สำหรับการดีบักสำหรับเซิร์ฟเวอร์เท่านั้น อ็อพชัน -d หลายตัวเพิ่มการดีบัก                  ชั้น สูงสุดคือ 3

จากไคลเอ็นต์ของคุณคุณสามารถใช้ตัวเลือก verbose สำหรับ ssh ไปยังเซิร์ฟเวอร์เช่น ssh -vvv user@host.com -p พอร์ตที่คุณใช้สำหรับ sshd ของคุณ

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

สิ่งเหล่านี้ไม่มีคำตอบ แต่คุณสามารถเข้าใกล้ได้

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