คำสั่ง ls ใน ftp> ไม่ทำงาน!


17

ฉันกำลังฝึก ftp แต่ประสบปัญหา: คำสั่ง ls ไม่ทำงานบน ftp> ทำไม? ฉันตรวจสอบเซิร์ฟเวอร์ระยะไกล 2 ตัว แต่ ls ก็ไม่ทำงานเหมือนกันและให้เอาต์พุตที่ต่างออกไปเมื่อ ls ทำงาน โปรดดูด้านล่างสำหรับกล่องระยะไกล 2 กล่อง

ด้านล่างแสดงเซิร์ฟเวอร์ระยะไกลของฉันที่ฉันติดตั้ง vsftpd วันนี้

ravbholua@ravbholua-Aspire-5315:~$ ftp rs
Connected to ravi.com.
220 (vsFTPd 3.0.2)
Name (rs:ravbholua): 
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/home/ravbholua"
ftp> ls
500 Illegal PORT command.
ftp: bind: Address already in use
ftp> 

ด้านล่างสำหรับเครื่องระยะไกลที่แตกต่างกันที่ฉันต้องส่งไฟล์บางไฟล์ แต่เนื่องจาก ls บน ftp> ไม่ทำงานฉันจะถ่ายโอนไฟล์จากกล่องภายในเครื่องไปยังกล่องนั้นได้อย่างไรเพราะฉันไม่สามารถยืนยันได้หากปราศจาก ls ไม่ว่าไฟล์จะถูกถ่ายโอนหรือไม่

ravbholua@ravbholua-Aspire-5315:~$ ftp 125.21.153.140
Connected to 125.21.153.140.
220---------- Welcome to Pure-FTPd [TLS] ----------
220-You are user number 1 of 10 allowed.
220-Local time is now 04:34. Server port: 21.
220-This server supports FXP transfers
220 You will be disconnected after 2 minutes of inactivity.
Name (125.21.153.140:ravbholua): peacenews
331 User peacenews OK. Password required
Password:
230 OK. Current restricted directory is /
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200-FXP transfer: from 123.63.112.168 to 10.215.10.80
200 PORT command successful

โปรดทราบว่าสำหรับเครื่องข้างต้นเมื่อฉันวิ่ง ls บน ftp> พรอมต์จะไม่กลับมา

บนทั้งเครื่องรีโมตฉันได้เอาต์พุตต่างกันเมื่อเรียกใช้ ls บน ftp>


3
ใช้โหมดพาสซีฟ ตรวจสอบ man page ของไคลเอนต์ ftp ของคุณสำหรับวิธีการเปิดใช้งาน
Stéphane Chazelas

จะทราบได้อย่างไรว่าไคลเอนต์ ftp ใดกำลังทำงานอยู่ที่ส่วนท้ายของฉัน
Ravi

@ สตีเฟนขอบคุณ! ฉันวิ่งman ftpและพบ-pตัวเลือกที่จะใช้สำหรับโหมดพาสซีฟ ตามที่man ftpระบุไว้ว่า ftp เป็นส่วนต่อประสานผู้ใช้กับโปรโตคอลการถ่ายโอนไฟล์อินเทอร์เน็ตมาตรฐาน: ดังนั้นจึงเป็นส่วนต่อประสานและไม่ใช่ไคลเอนต์ ftp !!! สิ่งที่ฉันเข้าใจคือไคลเอนต์ ftp ใช้อินเตอร์เฟสนี้ (ftp) สำหรับการถ่ายโอนไฟล์
ราวี

คำตอบ:


26

FTP เป็นโปรโตคอลโบราณ มันขึ้นอยู่กับการเชื่อมต่อ TCP สองการเชื่อมต่อควบคุมการแลกเปลี่ยนคำสั่งและการเชื่อมต่อข้อมูลสำหรับเนื้อหาของไฟล์และยังสำหรับการส่งออกคำสั่งเช่นlsสำหรับเนื้อหาของไฟล์และยังสำหรับการส่งออกของคำสั่งเช่นสิ่งที่เกิดขึ้นที่นี่คือการเชื่อมต่อการควบคุมถูกสร้างขึ้น แต่การเชื่อมต่อข้อมูลจะไม่ผ่าน

โดยค่าเริ่มต้น (โหมดใช้งาน) การเชื่อมต่อข้อมูลจะถูกสร้างขึ้นจากผู้ส่งไปยังผู้รับ สำหรับผลลัพธ์ของlsเซิร์ฟเวอร์ข้อมูลจะถูกส่งดังนั้นเซิร์ฟเวอร์พยายามเปิดการเชื่อมต่อกับลูกค้า สิ่งนี้ใช้ได้ดีเมื่อ FTP ถูกประดิษฐ์ขึ้น แต่ปัจจุบันลูกค้ามักอยู่หลังไฟร์วอลล์หรือ NAT ซึ่งอาจหรืออาจไม่รองรับ FTP ที่ใช้งานอยู่ สลับไปที่โหมดพาสซีฟซึ่งลูกค้าจะเริ่มการเชื่อมต่อข้อมูลเสมอ

ตรวจสอบคู่มือของftpคำสั่งของคุณเพื่อดูวิธีเปลี่ยนเป็นโหมดพาสซีฟโดยค่าเริ่มต้น สำหรับสิ่งที่เกิดขึ้นครั้งเดียวการพิมพ์คำสั่งpassiveมักจะเป็นการหลอกลวง

คุณอาจต้องการที่จะเปลี่ยนไปใช้ FTP ไคลเอนต์ดีกว่าเช่นncftpหรือlftp


ขอบคุณ !! แต่ทำไมทันใดนั้นปัญหานี้ก็เกิดขึ้น Eariler ฉันสามารถเรียกใช้ ls บน ftp> ได้ แต่เมื่อวานนี้ฉันติดตั้ง vsftpd บนรีโมตเซิร์ฟเวอร์ (VPS ของฉัน) และแก้ไขไฟล์.netrcบนกล่องภายในเครื่องของฉัน (เพิ่งใส่แฮชที่จุดเริ่มต้นของบรรทัดใน. netrc) นั่นคือทั้งหมดแล้วหลังจากปัญหาของ ls ฉันได้เผชิญ อะไรเป็นสาเหตุที่ทำให้ ls ทำงานได้เร็วขึ้นและตั้งแต่เมื่อวานไม่ทำงาน
Ravi

lftpคุณมีสิทธิที่จะขอแนะนำ ฉันมีประสบการณ์ทำงานกับสิ่งนั้น lftpมันน่าทึ่งจริงๆ นอกจากนี้ฉันต้องการเพิ่มว่าฉันเพิ่งตรวจสอบตอนนี้lftpและมันทำงานได้อย่างสมบูรณ์แบบโดยไม่มีปัญหา ls lsที่นี่ (ใน lftp) แสดงผลลัพธ์อย่างถูกต้อง
Ravi

3

โซลูชันที่สมบูรณ์แบบสมบูรณ์สำหรับ "คำสั่ง ftp 500 Illegal PORT" คลิกที่ลิงค์ต่อไปนี้: http://www.ucodice.com/articles/ftp-500-illegal-port-command/

สิ่งที่สกัดมา

กำลังพยายามเชื่อมต่อเซิร์ฟเวอร์ ftp & รับคำสั่ง 500 Illegal port คำสั่ง ปัญหานี้อาจเกิดขึ้นเมื่อไม่ได้กำหนดค่าโปรแกรม ftp สำหรับโหมดแฝง

คุณอาจได้รับตัวอย่างข้อผิดพลาดเช่น:

COMMAND:>              [3/11/2015 1:17:05 PM] PORT 192,168,0,101,196,215    
                       [3/11/2015 1:17:05 PM] 500 Illegal PORT command.    
ERROR:>                [3/11/2015 1:17:05 PM] Syntax error: command unrecognized.    
ERROR:>                [3/11/2015 1:17:05 PM] Failed to establish data socket.

เพื่อแก้ไขปัญหานี้คุณสามารถกำหนดพอร์ตหรือ ftp ในไฟล์กำหนดค่าของเซิร์ฟเวอร์ ftp & กำหนดที่อยู่ IP หรือเซิร์ฟเวอร์ PASV

ตรวจสอบไฟล์การตั้งค่าสำหรับการตั้งค่าด้านล่าง

pasv_enable=YES
pasv_promiscuous=YES
pasv_max_port=Enter the max port range allowed on your server.
pasv_min_port=Enter the min port range allowed on your server.
pasv_address=Ip Address of your server.

หลังจากนั้นเริ่มบริการ ftp ใหม่และตรวจสอบการเชื่อมต่อ ftp

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