เกิดข้อผิดพลาดในการเข้าถึงรูทของเครื่องเสมือนผ่าน PuTTy


0

ฉันต้องการเข้าถึงรูทเครื่องเสมือน vSphere ESXi 5.5 Ubuntu ผ่าน PuTTy ดังนั้นฉันโหลดสาธารณะเช่น ของ vm และลอง SSHing ผ่านพอร์ต 22

สิ่งนี้ทำให้เกิดข้อผิดพลาดดังต่อไปนี้:

PuTTy fatal-network error

ฉันไปที่ไฟล์ config sshd และเปลี่ยนพอร์ตจาก 22 เป็น 443 และพยายาม ssh อีกครั้งผ่านพอร์ต 443 แต่รับเซสชันเทอร์มินัลที่ฉันไม่สามารถพิมพ์อะไรได้

ฉันเปลี่ยนพอร์ตอีกครั้งในไฟล์กำหนดค่าเป็นพอร์ต 80 และลองอีกครั้งผ่าน PuTTy ครั้งนี้ฉันได้รับข้อผิดพลาดร้ายแรงของ PuTTy อีกครั้ง

PuTTy fatal error-server closed

มีใครที่นี่แก้ไขปัญหานี้หรือไม่


1
โดยปกติคุณจะเข้าสู่ระบบในฐานะ root จากคอนโซลไม่ใช่จากระยะไกลและเป็นไปได้ว่าการตั้งค่าเริ่มต้นคือไม่อนุญาตการเชื่อมต่อระยะไกลจากผู้ใช้รูท เมื่อเชื่อมต่อจากระยะไกลคุณควรเข้าสู่ระบบในฐานะผู้ใช้ปกติและใช้ sudo เพื่อดำเนินการใด ๆ ในฐานะรูท
Herb Wolfe

Ubuntu ไม่มีผู้ใช้รูท รหัสผ่าน โดยค่าเริ่มต้น.
Journeyman Geek

@JourneymanGeek มันมีผู้ใช้รูทมันแค่ปิดการใช้งานโดยไม่มีรหัสผ่านที่ถูกต้อง ทุกระบบ Linux มีผู้ใช้รูทตามที่กล่าวไว้เช่น ใน บัญชีรูทมี UID / GID 0 เสมอหรือไม่ . อาจมีหรือไม่มีการแมปไปที่ ชื่อผู้ใช้ แต่ผู้ใช้มีอยู่ด้วยวิธีใดวิธีหนึ่ง
a CVn

ฉันคิดว่ามีบางอย่างที่ตอบสนองต่อพอร์ต 80 แต่ไม่สามารถสื่อสารกับโปรโตคอล SSH ได้อย่างถูกต้อง ถ้าคุณบอก PuTTY ว่าคุณต้องการเชื่อมต่อกับโปรโตคอล Telnet แทนที่จะเป็น SSH คุณจะได้รับผลลัพธ์ที่แตกต่างและใช้งานได้มากกว่า (ถึงอย่างนั้นผลลัพธ์ของคุณอาจไม่เป็นประโยชน์หากคุณไม่คุ้นเคยกับคำสั่งของโปรโตคอล HTTP)
TOOGAM

คำตอบ:


2

เนื่องจากคุณไม่ได้พูดอะไรเลยฉันจะสมมติว่าคุณมีการติดตั้ง Ubuntu ค่อนข้างมากใน VM นั้น

มันทำให้น้ำขุ่นเล็กน้อยเมื่อคุณบอกว่าคุณใช้ที่อยู่ IP สาธารณะของ VM เพราะอาจหมายถึงบางสิ่งที่แตกต่างกัน

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

ฉันค่อนข้างมั่นใจว่าการติดตั้งเวิร์กสเตชัน Ubuntu ไม่ได้จัดส่งเซิร์ฟเวอร์ SSH ที่ใช้งานอยู่เป็นค่าเริ่มต้น อย่างไรก็ตามตัวแปรของเซิร์ฟเวอร์อาจทำเช่นนั้นได้เป็นอย่างดี

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

$ service sshd status

มันอาจจะเรียกว่าเป็นสิ่งที่ชอบ ssh, ssh-server, openssh-server หรือบางสิ่งบางอย่างตามเส้นเหล่านั้นแทน sshdแต่เปิดแท็บเสร็จสมบูรณ์ ssh (ชนิด ssh แถบ ) ควรให้คุณได้ใกล้ชิด คุณ อาจ จำเป็นต้อง sudo สิ่งนี้เช่น sudo service sshd statusแต่ฉันคิดว่าการเข้าถึงของผู้ใช้เป็นประจำควรเพียงพอที่จะรับรายงานสถานะบริการ (เรียกใช้ / หยุด)

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

$ sudo apt-get -u install openssh-server

ตรวจสอบว่ารายการแพ็กเกจที่จะติดตั้งนั้นดูมีเหตุผลและยืนยัน เซิร์ฟเวอร์ SSH จะเริ่มเมื่อสิ้นสุดกระบวนการติดตั้ง

ตอนนี้ดูที่ / etc / ssh / sshd_config มันจะมีศูนย์หรือมากกว่านั้น Port และ ListenAddress คำสั่งที่ให้ที่อยู่ IP หรือหมายเลขพอร์ต (หมายเลขพอร์ตจะมีค่าเริ่มต้นที่ 22 หากไม่ได้ระบุไว้และเซิร์ฟเวอร์จะรับฟังที่อยู่ IP ทั้งหมดหากคุณไม่ได้ระบุอย่างชัดเจน) นั่นคือที่อยู่ IP และพอร์ตที่คุณต้องการเชื่อมต่อ

หากไม่มีการระบุที่อยู่ IP ip addr show จะแสดงอินเทอร์เฟซเครือข่ายภายใน VM และที่อยู่ IP ที่เกี่ยวข้อง เหล่านี้คือสิ่งที่เซิร์ฟเวอร์ SSH จะรับฟัง

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

เมื่อทำเสร็จแล้ว คุณควรจะสามารถเชื่อมต่อโดยใช้ PuTTY และรับเทอร์มินัลเซสชันในฐานะผู้ใช้ที่ไม่ได้รับสิทธิพิเศษบน Ubuntu VM จากนั้นใช้ sudo เพื่อยกระดับสิทธิ์ของคุณตามความต้องการเช่นเดียวกับที่คุณนั่งอยู่หน้าระบบร่างกาย

ฉันขอแนะนำให้ตั้งค่าการตรวจสอบสิทธิ์กุญแจสาธารณะและฉันขอแนะนำอย่างมาก ต่อต้าน อนุญาตให้รูทเข้าสู่ระบบโดยตรง อย่างไรก็ตามหากคุณอย่างแน่นอน ต้อง อนุญาตให้รูทเข้าสู่ระบบโดยตรงจากนั้นแก้ไข / etc / ssh / sshd_config และระบุ PermitRootLogin yesจากนั้น sudo passwd root และให้ราก ดี รหัสผ่านและรีสตาร์ท SSH daemon อีกครั้ง ฉันไม่แนะนำนี้

เมื่อพ้นทางแล้ว ปัญหาของการเชื่อมต่อกับพอร์ต 80 และ 443 ของคุณคืออะไร พอร์ต 80 เป็นพอร์ตเริ่มต้นสำหรับ HTTP และพอร์ต 443 เป็นพอร์ตเริ่มต้นสำหรับ HTTPS หากเว็บเซิร์ฟเวอร์กำลังทำงานอยู่อาจเป็นไปได้ว่ากำลังฟังทั้งสองพอร์ตเหล่านั้นและ เมื่อคุณเชื่อมต่อจะคาดหวังคำขอ HTTP; ในกรณีของพอร์ต 443 หลังจากการเจรจา SSL เป็นไปได้แน่นอนที่จะออกคำขอ HTTP ด้วยตนเอง แต่ไม่ใช่เซสชันล็อกอินเทอร์มินัลและเชลล์ โดยทั่วไปแล้วการเชื่อมต่อกับพอร์ตสุ่ม (แม้แต่พอร์ตที่รู้จักกันดี) ก็ไม่น่าจะทำให้คุณได้รับผลลัพธ์ที่ตามมา


ฉันต้องการเพิ่มบางรุ่นที่ใหม่กว่าใช้ systemd มากกว่าพุ่งพรวดดังนั้นคำสั่งอาจแตกต่างกันเล็กน้อย
Journeyman Geek

@ JourneymanGeek จริงๆแล้วฉันคิดว่า service sshd status เป็นวิธีที่คุณจะทำกับ systemd มันอยู่ใน Debian Jessie อย่างแน่นอน ไม่ ใช้พุ่งพรวด
a CVn

บริการถูกคิดค่าเสื่อมราคาใน distros ที่ทำ systemd - systemctl ของมัน คุณจะได้รับข้อความเตือนสำหรับคำสั่งมากมายที่ใช้ service
Journeyman Geek

@ JourneymanGeek จุดที่ดี OP ไม่ได้ระบุว่า Ubuntu เปิดตัวรุ่นใดดังนั้นข้อมูลเฉพาะจะเป็นการคาดเดาเล็กน้อยทั้งสองวิธี
a CVn

-1

ภายในเครื่อง Ubuntu ให้เปิด / etc / ssh / sshd_config แล้วเปลี่ยน PermitRootLogin เป็น yes

# Authentication: 
LoginGraceTime 120 
PermitRootLogin yes
StrictModes yes

คุณต้องตั้งค่าวิธีการรับรองความถูกต้องเนื่องจาก Ubuntu ไม่ได้ให้สิทธิ์ root รหัสผ่านที่ถูกต้องในการติดตั้งเริ่มต้น ดังนั้นตั้งค่าการตรวจสอบกุญแจสาธารณะหรือเข้าสู่บัญชีด้วยสิทธิ์ sudo และทำ sudo passwd root เพื่อให้ราก ดี รหัสผ่าน
a CVn

มันยังเป็น น่ากลัว แนวคิดในการอนุญาตให้เข้าสู่ระบบจากระยะไกลโดยเฉพาะอย่างยิ่งไม่มีวิธีการรักษาความปลอดภัยอื่น ๆ เช่นการตรวจสอบสิทธิ์ด้วยรหัส
Journeyman Geek

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