โปรโตคอล SSH หรือ FTP แจ้งให้เซิร์ฟเวอร์ทราบว่าฉันกำลังพยายามเชื่อมต่อกับโดเมนใด


25

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

host serverfault.com
GET /

มีปรากฏการณ์ที่คล้ายกันเกิดขึ้นเมื่อเชื่อมต่อsshหรือftpไม่?

ฉันถามเพราะฉันกำลังพยายามที่จะ ssh ลงในเซิร์ฟเวอร์ (GoDaddy webhosting) ซึ่งคาดว่าชื่อโดเมน แต่จะไม่ปล่อยให้ฉันเข้าไปเมื่อฉันพยายามที่จะเชื่อมต่อผ่านuser@IPaddressDNS เพราะยังไม่ได้ย้ายไปยังที่อยู่ IP ของ GoDaddy


คุณมี.ssh/configชื่อโฮสต์ที่เฉพาะเจาะจง (หรือที่อยู่ IP) หรือไม่? คุณได้รับข้อผิดพลาดอะไร (อืมนี่เป็นการสนับสนุน แต่ไม่ใช่เป้าหมายของการตอบคำถาม ... )
Andreas Krey

เพียงแค่ทั่วไปLogin authentication failedสำหรับ FTP และPermission deniedสำหรับ SSH การเชื่อมต่อจริงนั้นใช้ได้และฉันตรวจสอบข้อมูลรับรองการเข้าสู่ระบบสี่เท่า
dotancohen

คำตอบ:


25

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

ดูเหมือนว่าฉันผิดเกี่ยวกับ FTP
ดูคำตอบอื่น ๆ สำหรับรายละเอียด


5
มันไม่เป็นความจริงสำหรับ FTP อีกต่อไป ดูคำตอบของฉัน
Martin Prikryl

น่าสนใจฉันไม่รู้ ฉันแก้ไขคำตอบของฉัน ขอบคุณ!
ขนมปัง

ที่จริงแล้วในปี 2015 คำตอบที่ยังไม่ได้แก้ไขยังคงถูกต้องในกรณีส่วนใหญ่ ที่อาจมีการเปลี่ยนแปลงในอีกไม่กี่ปีข้างหน้า
dotancohen

ฉันสงสัยว่ามีลูกค้ากี่รายที่ให้การสนับสนุน ไม่ว่าในกรณีใดคำตอบของคุณถูกต้องมากขึ้น
หลอกลวง

@ เฟกเกอร์ฉันได้เพิ่มข้อมูลเล็กน้อยเกี่ยวกับการสนับสนุนฝั่งไคลเอ็นต์ฉันรู้ ATM อาจทำการวิจัยเพิ่มเติมในภายหลัง
Martin Prikryl

34

โปรโตคอล SSH / SFTP ไม่มีกลไกใด ๆ ในการจัดเตรียมโฮสต์ไปยังเซิร์ฟเวอร์

มีการอภิปรายเกี่ยวกับการเพิ่มฟังก์ชั่นนี้เพื่อเป็น OpenSSH ดู"โฮสต์เสมือน" สำหรับ SSH


โปรโตคอล FTP ไม่ได้มีHOSTคำสั่งซึ่งเป็นเทียบเท่ากับ HTTP Hostส่วนหัว มันถูกกำหนดโดยที่ค่อนข้างใหม่RFC 7151 RFC เผยแพร่ในเดือนมีนาคม 2014 (แม้ว่าร่างแรกมาจาก 2007) ดังนั้นจึงยังไม่รองรับในระดับสากล

บนฝั่งเซิร์ฟเวอร์สนับสนุนโดย IIS (RFC รองรับโดย Microsoft) และProFTPD (ตั้งแต่ 1.3.6rc1) ไม่รองรับเซิร์ฟเวอร์ Unix FTP ทั่วไปอื่น ๆ เช่น Pure-FTPd หรือ vsftpd

บนฝั่งไคลเอ็นต์ได้รับการสนับสนุนโดย(ของฉัน) WinSCP FileZilla ไม่ได้รับการสนับสนุนเนื่องจากผู้เขียนคัดค้านความคิดและโดย CyberDuck ฉันไม่รู้เกี่ยวกับคนอื่น


ขอขอบคุณนี่จะเป็นข้อพิจารณาที่สำคัญในอีกไม่กี่ปีข้างหน้าเมื่อมีคนเจอปัญหานี้และ google คำถามนี้
dotancohen

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

@kasperd คุณสามารถใช้หมายเลขพอร์ตที่แตกต่างกันสำหรับการเชื่อมต่อที่แตกต่างกัน หรือคุณสามารถทำได้โดยขึ้นอยู่กับชื่อผู้ใช้
AE

@AE ทั้งสองวิธีจะใช้กับกรณีการใช้งานของฉันไม่ได้ เมื่อถึงเวลาที่ฉันต้องตัดสินใจว่าเซิร์ฟเวอร์ใดที่จะส่งการเชื่อมต่อไปถึงลูกค้ายังไม่ได้ส่งชื่อผู้ใช้ (ยิ่งไปกว่านั้นฉันค่อนข้างแน่ใจว่าชื่อผู้ใช้ส่งการเข้ารหัสเท่านั้นและฉันไม่รู้วิธีการเชื่อมต่อ ssh เพื่อแยกชื่อผู้ใช้) หมายเลขพอร์ตจะไม่ทำงานเนื่องจากส่วนหน้าของฉันทำการค้นหา DNS ของชื่อโฮสต์จริง เพื่อที่จะหาแบ็กเอนด์ (ส่วนหน้าเป็นสแต็กคู่, ส่วนหลังไม่มีที่อยู่ IPv4 สาธารณะใด ๆ จุดประสงค์ของส่วนหน้าคือการทำให้แบ็กเอนด์เข้าถึงได้เฉพาะลูกค้าที่ใช้ IPv4 เท่านั้น)
kasperd

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