ทำไมความพยายาม SSH ของฉันถึงล้มเหลวเนื่องจากหมดเวลา


22

ฉันยังใหม่กับการใช้ ssh และเทคโนโลยีที่เกี่ยวข้องดังนั้นจึงเป็นไปได้อย่างมากที่ฉันไม่เข้าใจสิ่งพื้นฐาน (นี่อาจเป็นคำถามสำหรับข้อบกพร่องของเซิร์ฟเวอร์แทน .... ไม่แน่ใจ)

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

~ $ ssh -vvv DOMAIN.com
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/USER/.ssh/config
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 102: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to DOMAIN.com [123.45.67.89] port 22.
debug1: connect to address IPADD port 22: Operation timed out
ssh: connect to host DOMAIN.com port 22: Operation timed out

ความคิดแรกของฉันคือฉันได้ระบุโดเมนผิดหรือมีบางอย่างผิดปกติกับเว็บไซต์ของฉัน ดังนั้นฉันจึงพยายามเชื่อมต่อกับโดเมนเดียวกันผ่าน FTP และใช้งานได้ดี (ได้รับแจ้งชื่อผู้ใช้):

~ $ ftp
ftp> open
(to) DOMAIN.com
Connected to DOMAIN.com.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 2 of 50 allowed.
220-Local time is now 12:47. Server port: 21.
220-This is a private system - No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
Name (DOMAIN.com:USER):

ดังนั้นฉันคิดว่าบางทีฉันแค่ใช้ SSH ผิด ฉันเริ่มดูวิดีโอบทช่วยสอนนี้ ในเวลาประมาณ 1 นาทีเขาจะssh will@supercars.comได้รับพรอมต์ชื่อผู้ใช้ แต่มันทำให้ฉันหมดเวลาเหมือนที่กล่าวไว้ข้างต้น จากนั้นฉันก็ลองssh google.comทำเช่นเดียวกัน ssh localhostในทางกลับกันทำงานได้ดี ดังนั้นปัญหาดูเหมือนจะเป็นสิ่งที่ต้องทำกับการร้องขอ SSH ผ่านเครือข่าย

ความคิดต่อไปของฉันคืออาจเป็นปัญหาไฟร์วอลล์ ฉันมี Sophos ติดตั้งอยู่ในเครื่องนี้ แต่ตามผู้ดูแลระบบของฉันว่า "ไม่ควร" บล็อกคำขอ SSH ขาออก

ใครสามารถช่วยคิดออกว่าทำไมสิ่งนี้ถึงเกิดขึ้น?


8
นั่นคือที่อยู่ IP สดที่คุณให้เรา มีการเชื่อมต่อ FTP ที่ไม่ปลอดภัยที่ทำงานอยู่ นี่อาจไม่ใช่ความคิดที่ดี นอกจากนี้ยังไม่มีสิ่งใดทำงานบนพอร์ต 22 ซึ่งฉันสงสัยว่าเป็นสาเหตุของปัญหาของคุณ คุณไม่สามารถ ssh เป็นอะไรเซิร์ฟเวอร์จะต้องมีการทำงาน sshd นี้ไม่ได้ดูเหมือน หากเป็นเซิร์ฟเวอร์ของคุณให้เปิด ssh แล้วปิด ftp คุณสามารถทำ ftp บน ssh เมื่อมันทำงาน
marinus

3
ไม่จำเป็นต้องลบ ฉันแก้ไข IP ออกและขอให้ SE ล้างประวัติการแก้ไข ด้วยวิธีนี้บุคคลที่ตอบคุณจะไม่เสียชื่อเสียง
terdon

คำตอบ:


24

ข้อความแสดงข้อผิดพลาดหมายถึงเซิร์ฟเวอร์ที่คุณกำลังเชื่อมต่อไม่ตอบกลับการพยายามเชื่อมต่อ SSH ที่พอร์ต 22 มีสาเหตุที่เป็นไปได้สามประการ:

  1. คุณไม่ได้ใช้เซิร์ฟเวอร์ SSH บนเครื่อง คุณจะต้องติดตั้งเพื่อให้สามารถ ssh ได้
  2. คุณกำลังใช้งานเซิร์ฟเวอร์ SSH บนเครื่องนั้น แต่อยู่บนพอร์ตที่ไม่เป็นมาตรฐาน คุณจำเป็นต้องรู้ว่าพอร์ตใดกำลังทำงานอยู่ บอกว่ามันเป็นพอร์ต 2222 ssh -p 2222 hostnameคุณเรียกใช้แล้ว
  3. คุณใช้เซิร์ฟเวอร์ SSH บนเครื่องนั้นและใช้พอร์ตที่คุณพยายามเชื่อมต่อ แต่เครื่องมีไฟร์วอลล์ที่ไม่อนุญาตให้คุณเชื่อมต่อ คุณจะต้องหาวิธีเปลี่ยนไฟร์วอลล์หรือคุณอาจต้องเปลี่ยนโฮสต์จากโฮสต์อื่นเพื่อให้ได้รับอนุญาต

แก้ไข : ตามที่ (ถูกต้อง) ชี้ให้เห็นในความคิดเห็นที่สามเป็นกรณีที่แน่นอน; อีกสองรายการจะส่งผลให้เซิร์ฟเวอร์ที่ส่งแพคเกจ TCP "รีเซ็ต" กลับมาเมื่อความพยายามในการเชื่อมต่อของลูกค้าส่งผลให้เกิดข้อความแสดงข้อผิดพลาด "การเชื่อมต่อที่ถูกปฏิเสธ" แทนที่จะหมดเวลาที่คุณได้รับ อีกสองคนอาจเป็นเช่นนั้น แต่คุณต้องแก้ไขอันดับที่สามก่อนจึงจะสามารถดำเนินการต่อได้


6
ถ้ามันไม่ได้ติดตั้งหรือถ้ามันกำลังทำงานบนพอร์ตอื่นเขาก็จะได้รับข้อความปฏิเสธการเชื่อมต่อ
Hut8

2
@ Hut8: ถูกต้อง ในความเป็นไปได้ 3 ข้อของคุณมีเพียงหนึ่งในสามเท่านั้นที่อาจนำไปสู่การหมดเวลา
..

บน Ubuntu: sudo ufw อนุญาต 22; ทำงานของคุณแล้ว; sudo ufw deny 22. digitalocean.com/community/tutorials/…
Daniel

ฉันคิดว่ามีความเป็นไปได้ที่ 4 ซึ่งก็คือเซิร์ฟเวอร์ไม่สามารถเข้าถึงได้ (ปัญหาการกำหนดเส้นทางอินเทอร์เน็ตมีบางสิ่งบางอย่างในระหว่าง ... ) แม้ว่าคุณจะสามารถเข้าถึงบริการอื่น ๆ ได้เนื่องจากเส้นทางที่เลือกอาจแตกต่างกันสำหรับsshบริการอื่น ๆ
Alexis Wilke

3

ตรวจสอบโดยคำสั่ง telnet ว่าคุณสามารถเชื่อมต่อกับพอร์ต SSH 22 ได้ไหมถ้าคุณไม่สามารถเชื่อมต่อได้ให้ลองตรวจสอบดู ก่อนอื่นคุณควรจะสามารถเชื่อมต่อที่พอร์ตหมายเลข 22 ถึงเซิร์ฟเวอร์

โดยค่าเริ่มต้นพอร์ต SSH คือ 22 แต่ถ้าคุณกำหนดค่าพอร์ตอื่นให้ใช้พอร์ตนั้นแทน 22

telnet <ip / url ของเซิร์ฟเวอร์> <พอร์ต>

เช่น telnet domain.com 22


2
นี่จะเป็นการหมดเวลาเหมือนกัน (มิฉะนั้นssh -vบันทึกจะแสดงการเชื่อมต่อสำเร็จแทนที่จะบอกว่าหมดเวลา)
Wouter Verhelst

@Wouter Verhelst ใช่ขอบคุณสำหรับการชี้แจง
AVJ

คุณจะตรวจสอบพอร์ตที่กำหนดค่าได้อย่างไร? กำหนดค่าพอร์ตใหม่หรือไม่
Yonatan Simson

@YonatanSimson สมมติว่าคุณมีสิทธิ์เข้าถึงคุณสามารถใช้sudo netstat -a64np( netstat) และค้นหาsshdเซิร์ฟเวอร์ (คอลัมน์สุดท้าย) nmapหากคุณไม่ได้มีการเข้าถึงคุณสามารถลอง
Alexis Wilke
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.