เหตุใดฉันจึงได้รับข้อผิดพลาด“ พอร์ต 22: การเชื่อมต่อถูกปฏิเสธ”


70

ฉันได้รับ

port 22: Connection refused 

ข้อผิดพลาดขณะเชื่อมต่อกับเซิร์ฟเวอร์

ฉันมีทั้งลูกค้า openssh และเซิร์ฟเวอร์ที่ติดตั้งและพวกเขากำลังทำงานอยู่ แต่ก็ยังมีข้อผิดพลาดอยู่ กรุณาช่วย.


2
เพื่อชี้แจงก็คือเซิร์ฟเวอร์ openssh ติดตั้งอยู่บนเซิร์ฟเวอร์หรือไม่
เควิน

ตรวจสอบ ssh ทำงานบนพอร์ต 22 และหากคุณมีกฎไฟร์วอลล์บล็อกพอร์ต
Manula Waidyanatha

1
ตามที่ฉันกำหนดค่าไฟร์วอลล์ที่อนุญาตให้ ssh (พอร์ต 22) ซึ่งปัจจุบันถูกบล็อกโดยไฟร์วอลล์
Ketan Patel

sudo ufw เปิดใช้งานaskubuntu.com/questions/417998/…

สิ่งนี้อาจเกิดขึ้นได้เนื่องจากการสูญเสียเครือข่ายชั่วคราวเช่นกัน ดังนั้นตรวจสอบการเชื่อมต่ออินเทอร์เน็ตของคุณ
user648610

คำตอบ:


78

ฉันผ่านปัญหานี้และได้รับคำตอบที่เหมาะสมในที่สุด

sudo apt-get update
sudo apt-get install openssh-server
sudo ufw allow 22

จากนั้นเข้าไปraspi-configในหน้าต่างเทอร์มินัลและเปิดใช้งาน ssh

สิ่งนี้จะอนุญาตให้ใช้พอร์ต 22 สำหรับ sshd


ปัญหาเดียวกันกับที่นี่ @SDsolar
Nadav B

@Nadiv ฉันต้องใช้ raspi-config เพื่อเปิดใช้งาน ssh คำตอบได้รับการแก้ไขเพื่อให้สะท้อนถึงสิ่งนี้
SDsolar

ดำเนินการสามบรรทัดแรกบนคอมพิวเตอร์ทั้งสองเครื่องและไฟล์ได้รับการถ่ายโอนเรียบร้อยแล้ว ทำไม Ubuntu ถึงไม่ติดตั้ง / เปิดใช้งานโดยปริยาย connection refusedข้อผิดพลาดคือความลับดังนั้นฉันมีความคิดว่ามันเป็นปัญหาไฟร์วอลล์ปัญหาชื่อผู้ใช้ปัญหาที่อยู่ IP ฯลฯ เป็นต้นที่น่าผิดหวังมาก
เกลียดชัง

sudo ufw allow 22ทำงานครั้งเดียว อีกครั้งข้อผิดพลาดเริ่มปรากฏขึ้น
เถาวัลย์

32

ขณะอยู่บนเซิร์ฟเวอร์ให้ตรวจสอบว่า sshd กำลังทำงานอยู่และกำลังฟังพอร์ต 22:

$ sudo netstat -anp | grep sshd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1538/sshd       
tcp6       0      0 :::22                   :::*                    LISTEN      1538/sshd       

หากคุณไม่ได้รับผลลัพธ์หรือไม่แสดงว่าคุณกำลังฟังบน tcp 0.0.0.0:22 ... แก้ไขได้

หากคุณแสดงให้เห็นว่า sshd กำลังทำงานและกำลังฟังพอร์ต tcp 22 ให้ตรวจสอบเพื่อให้แน่ใจว่าไม่มีกฎไฟร์วอลล์เข้ามา อีกครั้งบนเซิร์ฟเวอร์:

$ sudo iptables -L | grep ssh
DROP       tcp  --  anywhere             anywhere            tcp dpt:ssh 

หรือสลับกัน

$ sudo ufw verbose
Status: active

To                         Action      From
--                         ------      ----
22                         DENY        Anywhere
22/tcp                     DENY        Anywhere

หากคุณเห็นกฎเช่นเดียวกับกฎข้างต้นคุณจะต้องแก้ไข

หากคุณไม่เห็นกฎไฟร์วอลล์ใด ๆ และคุณเห็นบริการที่ใช้งานอยู่บนเซิร์ฟเวอร์แสดงว่าถึงเวลาที่ต้องตรวจสอบเวิร์กสเตชันของคุณและเครือข่ายที่เชื่อมต่ออยู่ คุณสามารถเชื่อมต่อกับเซิร์ฟเวอร์อื่นได้หรือไม่? คุณสามารถ ping อินเตอร์เฟสหรือที่อยู่ลูปแบ็คของคุณเองได้หรือไม่? เป็นต้น


1
และถ้าคุณสามารถเชื่อมต่อกับเซิร์ฟเวอร์อื่น ๆ ?
opensourcechris

2
สวัสดีขอบคุณสำหรับคำตอบฉันไม่ได้พอร์ต 22, 2222 ของมันคุณพูดว่าแก้ไขได้ แต่อย่างไร
Yogesh Darji

ฉันไม่ได้ให้ผลลัพธ์
SDsolar

แก้ไขด้วย: sudo ufw allow 22(หรืออะไรก็ตามที่พอร์ตของคุณ)
John D

netstat เลิกใช้แล้ว (และไม่ได้ติดตั้งเป็นค่าเริ่มต้นบน Ubuntu รุ่นใหม่ - ไม่พบคำสั่ง 'netstat' แต่สามารถติดตั้งได้ด้วย ... ) อาจอัปเดตสำหรับiproute2หรือไม่
Peter Mortensen

14

ลองสิ่งนี้

sudo apt-get remove openssh-client openssh-server

แล้ว

sudo apt-get install openssh-client openssh-server

มันได้ผลกับฉัน :)

อาจไม่ใช่วิธีแก้ปัญหาดั้งเดิมที่สุด... :)


3
การใช้ dpkg-reconfigure นั้นสามารถใช้แทนการถอนการติดตั้ง / ติดตั้งใหม่ได้ง่ายขึ้น
Stephen Michael Kellat

1
ฉันต้องใช้การล้าง apt-get openssh-server (แทนที่จะลบ) เพื่อให้มันใช้งานได้
11101101b

6

มาพร้อมกับปัญหาเดียวกันหลังจากติดตั้ง Raspbian โซลูชันที่เหมาะกับฉัน:

sudo apt-get purge openssh-server
sudo apt-get install openssh-server

หากวิธีนี้ใช้ได้ผลคุณจะต้องเปลี่ยน sshd-config ก่อน
guntbert

ฉันแก้ไข sshd_config บน Raspbian ในขณะที่พยายามตั้งค่า ssh วิธีนี้ใช้ได้ผลสำหรับฉัน
สกอตต์

+1 ทางออกเดียวที่ใช้งานได้!
Nadav B

1

คำสั่งต่อไปนี้ใช้งานได้สำหรับฉัน:

cd /root/.ssh
vi known_hosts

ตอนนี้ลบทุกอย่างในไฟล์นั้นและป้อนใน terminal:

service sshd restart

ที่มา: SSH - การเชื่อมต่อถูกปฏิเสธ


ปัญหาที่คล้ายกันสำหรับฉัน แต่ฉันเคลียร์ known_hosts ของฉันด้วยการssh-keygen -f "/home/MYUSER/.ssh/known_hosts" -R MYHOSTแทนที่ในผู้ใช้ linux และโฮสต์ระยะไกลของฉันฉันพยายามที่จะเชื่อมต่อกับ
Chris

1

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


0

IP แบบคงที่ผิดในกรณีของฉัน พบได้จากการทำping <my_ip>หลังจากเปลี่ยนเซิร์ฟเวอร์ มันยังคงกระตุกแม้ว่าเซิร์ฟเวอร์จะปิดอยู่ การเปลี่ยน IP ช่วยแก้ปัญหา

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