เซิร์ฟเวอร์ ssh ของ Cygwin ไม่ยอมรับการเชื่อมต่อ


14

ฉันเพิ่งตั้งค่าเซิร์ฟเวอร์ SSH (OpenSSH) บนเครื่อง Windows 7 โดยใช้ cygwin และฉันพยายามเชื่อมต่อกับมันโดยใช้ PuTTY บนเครื่อง Windows Vista แต่ฉันได้รับการเชื่อมต่อหมดเวลาแล้ว ฉันได้ตรวจสอบกิจกรรมเครือข่ายบนเครื่อง Win 7 ด้วย Wireshark และพบว่าฉันได้รับ TCP SYN ที่พอร์ต 22 บนเครื่อง Win 7 แต่ดูเหมือนเซิร์ฟเวอร์ ssh จะไม่ตอบกลับ ฉันได้ตรวจสอบหมายเลขพอร์ต sshd ที่มีการกำหนดค่าให้ใช้ตรวจสอบกฎไฟร์วอลล์ของฉันและตรวจสอบว่าฉันสามารถ ssh localhost (ซึ่งฉันทำได้ดี) ฉันไม่รู้จะแก้ไขปัญหานี้ได้อย่างไร


คุณควรตรวจสอบไฟร์วอลล์อีกครั้งและ / หรือทำอย่างละเอียดในเรื่องนี้
jjlin

คำตอบ:


23

คุณอาจใช้ Windows Firewall เปิด: แผงควบคุม -> ไฟร์วอลล์ Windows -> อนุญาตโปรแกรมหรือคุณสมบัติผ่านไฟร์วอลล์ Windows

คลิกปุ่ม "เปลี่ยนการตั้งค่า" จากนั้นปุ่ม "อนุญาตโปรแกรมอื่น ... " SSHD อาจไม่อยู่ในรายการที่เกิดขึ้นดังนั้นให้ใช้ปุ่ม "เรียกดู ... " เพื่อค้นหาไบนารีและคลิก "เปิด" แล้วคลิก "เพิ่ม" ของฉันอยู่ใน C: \ cygwin \ usr \ sbin \ sshd.exe

คุณสามารถเลือก "ประเภทที่ตั้งเครือข่าย ... " ที่ใดที่หนึ่งที่คุณต้องการใช้ ฉันออกจากด้วยการตรวจสอบส่วนตัวและสาธารณะไม่ถูกตรวจสอบ ตอนนี้ฉันสามารถเข้าสู่ระบบจากระยะไกล


นอกเหนือจากคำตอบของแฟรงก์เมื่อฉันติดตั้ง VPN ความเป็นส่วนตัวบนคอมพิวเตอร์ในเครือข่ายภายในบ้านของฉันฉันเห็นปัญหาเดียวกันนี้ เป็นเพราะ VPN ทำให้คอมพิวเตอร์เชื่อมต่อกับ sshd บนเครือข่ายสาธารณะ ในการแก้ไขปัญหานี้ฉันต้องอนุญาตให้ sshd ผ่าน Windows Firewall สำหรับตำแหน่งสาธารณะและส่วนตัว
James Hirschorn

5

sshd_configของคุณระบุListenAddressเป็น0.0.0.0หรือ127.0.0.1หรือไม่

หากเป็น0.0.0.0หรือเพียงแค่แสดงความคิดเห็นคุณสามารถเชื่อมต่อจากนอกเครื่องเช่นจากคอมพิวเตอร์เครื่องอื่น

หากเป็น127.0.0.1 (หรือหมายเลข127.0.0.xอื่น ๆ) แสดงว่าฟังจาก LOCALHOST เท่านั้นและคุณสามารถลงชื่อเข้าใช้จากเครื่อง SAME เท่านั้น เครื่องภายนอกถูกปฏิเสธ


2
มันแสดงความคิดเห็นออกมา
Surma

1

หลังจาก messing ไปรอบ ๆ กับไฟร์วอลล์ windows ไม่มีผลในที่สุดฉันก็พบว่าฉันต้องอนุญาตการเชื่อมต่อกับเครือข่ายย่อยของตัวเองใน Cygwin ตัวเองผ่านทางไฟล์ /etc/hosts.allow

บรรทัดนี้ (ใช้เครือข่ายย่อยของฉัน) เป็นกฎข้อแรกแก้ไขปัญหาให้ฉัน

ทั้งหมด: 192.168.0.0/24: อนุญาต


1
ปัญหาเกี่ยวกับ hosts.allow หรือ hosts.deny จะไม่ทำให้การเชื่อมต่อหมดเวลา มันจะทำให้เซิร์ฟเวอร์ SSH ยอมรับการเชื่อมต่อจากนั้นปล่อยมันในระหว่างกระบวนการตรวจสอบ
Kenster

@Kenster hosts.allow และ hosts.deny ทำงานที่ระดับ TCP คุณจะไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ SSH ได้เนื่องจากคุณถูกบล็อกที่ชั้น 4 ก่อนถึงเซิร์ฟเวอร์ SSH
mtak

@mtak ไม่นั่นไม่ใช่เรื่องจริง hosts.allow และ hosts.deny ไฟล์การกำหนดค่าสำหรับTCP ห่อ โปรแกรมเซิร์ฟเวอร์ (sshd ในกรณีนี้) ต้องยอมรับการเชื่อมต่อ TCP รับที่อยู่ IP ของปลายทางปลายทางระยะไกลจากนั้นโทร TCP wrappers เพื่อดูว่าไคลเอ็นต์ควรได้รับอนุญาตหรือไม่ ถ้า libwrap ตอบว่าไม่แสดงว่าโดยทั่วไปแล้วเซิร์ฟเวอร์จะยกเลิกการเชื่อมต่อ
Kenster

ดูเช่นsshd.c มองหา LIBWRAP ifdefs นี่คือฟังก์ชั่น hosts_accessที่ sshd กำลังเรียกใช้ ฉันจะทราบว่าsshd.c รุ่นล่าสุดลบการสนับสนุน libwrap
Kenster

@ Kenster ฉันไม่ดีคุณพูดถูก ฉันลองแล้วฉันได้รับข้อผิดพลาดต่อไปนี้: ssh_exchange_identification: Connection closed by remote host. ขอให้เป็นวันที่ดีสำหรับ SU :)
mtak

1

สำหรับฉันปัญหาอยู่ที่เจ้าของ/var/emptyไฟล์ไม่ถูกต้อง ปัญหาที่เกิดขึ้นก็เห็นได้ชัดหลังจากวาง sshd /usr/sbin/sshd.exe -D -ddในโหมดการแก้ปัญหาด้วย ฉันต้องแก้ไขด้วย:

chown [user]:[group] /var/empty

ผู้ใช้และกลุ่มนำมาจากls -la /varไดเรกทอรี (จับคู่ไฟล์อื่น ๆ ) ดูข้อมูลเพิ่มเติมได้ที่นี่: https://docs.oracle.com/cd/E24628_01/install.121/e22624/preinstall_req_cygwin_ssh.htm#EMBSC340


ขอบคุณสำหรับการชี้ให้เห็นsshd -D -dd
John Oxley

0

ตรวจสอบให้แน่ใจว่าคุณเป็น win 7 Antivirus ไม่ได้ปิดกั้นพอร์ต 22 นอกจากนี้ให้ไปที่แผงบริการ windows ของคุณและค้นหา CYGWINsshd และเปิดใช้งาน ตั้งค่าการเข้าสู่ระบบเพื่อค้นหาและตรวจสอบกล่อง

ที่จะแก้ไขปัญหา: user @ mymachine ~ $ net start sshd ระบบเกิดข้อผิดพลาด 1069

บริการไม่เริ่มทำงานเนื่องจากการเข้าสู่ระบบล้มเหลว

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