การเข้าสู่ระบบคอนโซล SSH ทำงาน แต่ SFTP ไม่ได้เพราะอะไร


17

ฉันพยายาม SFTP ด้วย Filezilla แต่ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์และฉันคิดว่านี่เป็นเพราะกฎไฟร์วอลล์ของฉัน

ฉันสามารถ SSH ได้ดีอย่างแน่นอน พอร์ตสำหรับ SSH คือ 6128 ทุกคนสามารถบอกฉันได้ว่าการเปลี่ยนแปลงใดที่ฉันต้องทำเพื่ออนุญาตการเชื่อมต่อ FTP ผ่าน SSH เนื่องจาก SSH นั้นทำงานอยู่แล้ว

(นี่คือกฎ IPtables ของฉัน)

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
fail2ban-ssh  tcp  --  anywhere             anywhere             multiport dports ssh
ACCEPT     all  --  anywhere             anywhere
REJECT     all  --  anywhere             loopback/8           reject-with icmp-port-unreachable
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     udp  --  anywhere             anywhere             udp dpt:9987
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:10011
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:30033
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:6128
ACCEPT     icmp --  anywhere             anywhere             icmp echo-request
LOG        all  --  anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "
DROP       all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

Chain fail2ban-ssh (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

การตอบสนองจาก Filezilla คือ: "ตัดการเชื่อมต่อ: ไม่มีวิธีการตรวจสอบสิทธิ์ที่รองรับ (เซิร์ฟเวอร์ส่ง: publickey)" แต่ฉันใช้รหัสเดียวกันกับที่ใช้สำหรับการเข้าสู่ระบบคอนโซล SSH ของฉัน (PuTTy บน windows btw)
10

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

สวัสดีและยินดีต้อนรับสู่ Unix & Linux มันได้รับความสับสน b / c SFTP แบ่งปันองค์ประกอบของชื่อกับโปรโตคอล FTP แต่นอกเหนือจากนั้นพวกเขาไม่มีอะไรเกี่ยวข้องกัน SSH เป็นโปรโตคอลเดียวที่ทำงานบนพอร์ต 22 และให้ความสามารถในการเชื่อมต่ออย่างปลอดภัยในรูปแบบของเชลล์แบบโต้ตอบหรือเพื่อถ่ายโอนไฟล์ผ่านการเชื่อมต่อเดียวกัน เซิร์ฟเวอร์ SSH ทางด้านระยะไกลจำเป็นต้องอนุญาตให้มีการเชื่อมต่อ SFTP ดังนั้นฉันจะตรวจสอบบันทึกของเซิร์ฟเวอร์ SSH เพื่อดูข้อมูลเชิงลึกว่าเหตุใดจึงล้มเหลวนอกจากนี้เพื่อให้แน่ใจว่า Filezilla มีคีย์ที่เหมาะสมในการเชื่อมต่อกับเซิร์ฟเวอร์อย่างปลอดภัย
slm

ฉันจะตรวจสอบและยืนยัน SFTP ด้วยว่าตั้งค่าอย่างถูกต้องจากเซิร์ฟเวอร์ใช่คุณสามารถใช้sftpเครื่องมือบรรทัดคำสั่งบนเซิร์ฟเวอร์เพื่อเชื่อมต่อซึ่งมีประโยชน์ในการตรวจสอบสิ่งต่าง ๆ ก่อนนำ Filezilla มาผสมกัน digitalocean.com/community/tutorials/… .
slm

คำตอบ:


10

ในการเข้าถึง sftp ของคุณจากโฮสต์อื่น ๆ โปรดตรวจสอบให้แน่ใจว่าได้ติดตั้งและกำหนดค่าต่อไปนี้อย่างถูกต้อง

  • ติดตั้งเซิร์ฟเวอร์ OpenSSH
  • กำหนดค่าsshd_config
    • PubkeyAuthentication ใช่
    • ระบบย่อย sftp internal-sftp
  • เพิ่มกุญแจสาธารณะของคุณเป็น ~ / .ssh / authorized_keys

  • เริ่มเซิร์ฟเวอร์ ssh ด้วยพอร์ต 22 / TCP เปิด # /etc/init.d/sshd start

  • # iptables -I INPUT -j ACCEPT -p tcp --dport 22

ในที่สุดการทดสอบ $ sftp <login>@<hostname>


อีกความคิดที่ดีคือการตรวจสอบเซสชันแบบโต้ตอบโดยใช้ [[- $! = i ]] && กลับ
OMG-1

1
Subsystem sftp internal-sftpทำเพื่อฉัน มันถูกตั้งค่าเป็นค่า/usr/libexec/openssh/sftp-serverเริ่มต้นซึ่งไม่มีอยู่จริง
quietContest

การเพิ่มSubsystem sftp internal-sftpไปยัง sshd_config นั้นใช้ได้สำหรับฉันโดยไม่มีการเปลี่ยนแปลงอื่น ๆ บน Centos
Corgalore

2

ในกรณีของฉันผู้ใช้มีzshที่ด้านบนของไฟล์. bashrc ของเขาเพื่อให้เขาสามารถวางลงในเชลล์ zsh แทนที่จะทุบตี

ทุบตีเป็นเปลือกเริ่มต้นของเขา การลบสิ่งนี้สามารถแก้ไขปัญหาได้ ฉันจึงchsh user -s /bin/zshให้ผู้ใช้เก็บ zsh เป็นเชลล์เริ่มต้นของเขา


ปัญหาเดียวกันกับเชลล์อื่น ๆ (เช่นfish)
พอล

1

คุณมีข้อความไปที่คอนโซล (เช่นคำสั่ง echo) ในไฟล์. profile ใด ๆ ของคุณเช่น.bashrc? สิ่งนี้สามารถยุ่งกับการเชื่อมต่อ SFTP ดูคำตอบของฉัน สำหรับคำถามที่คล้ายกันในข้อผิดพลาดของเซิร์ฟเวอร์


ระวังด้วยสิ่งนี้อย่างแน่นอน หากคุณเปิดใช้คอนโซลอื่นโดยอัตโนมัติเช่นfishนี้จะทำให้เกิดปัญหาที่คล้ายกัน
พอล

1

ซอฟต์แวร์ป้องกันไวรัสของคุณยังสามารถทำให้สิ่งนี้ เราเผชิญกับมันเมื่อเร็ว ๆ นี้ sshผ่าน PuTTY ใช้งานได้ดี แต่ WinSCP ไม่สามารถเชื่อมต่อได้ เริ่มทำงานเมื่อมีการกำหนดค่าข้อยกเว้นใน Anti-Virus


0

หากคุณใช้ filezilla คำตอบต่อไปนี้ช่วยฉันได้:

https://www.digitalocean.com/community/questions/able-to-access-via-ssh-but-not-filezilla

ใน Filezilla เลือกเมนูแก้ไข -> การตั้งค่าที่แผงด้านซ้ายขยายไปยังการเชื่อมต่อ -> SFTP ทางด้านขวาให้แน่ใจว่าคุณมีไฟล์กุญแจส่วนตัวที่ถูกต้องหรือเพิ่มถ้าไม่มีรายการที่ถูกต้อง

ใช้คอนโซลเว็บ DO ล็อกอินเป็นรูทและทำ 'tail -f /var/log/auth.log' จากนั้นลองลงชื่อเข้าใช้ด้วย Filezilla และบันทึกข้อความใด ๆ


0

คำตอบของฉันสำหรับคำถามที่คล้ายกันในข้อผิดพลาดของเซิร์ฟเวอร์ :

ฉันเพิ่งพบปัญหานี้ (โดยเฉพาะสำหรับ sftp แต่ไม่ใช่ ssh ที่ฉันสามารถเชื่อมต่อได้โดยไม่มีปัญหา) และไม่มีวิธีแก้ไขปัญหาที่นี่สำหรับฉัน ในกรณีของฉันมันเป็นเพราะมีกุญแจ SSH มากเกินไป (IdentityFile ของ) ~/.ssh/ใน ดูเหมือนว่าเมื่อคุณไม่มีรายการโฮสต์~/.ssh/configสำหรับโฮสต์ที่คุณพยายามเชื่อมต่อด้วยปุ่มขวามันแค่ส่งกุญแจทั้งหมดของคุณทีละหนึ่ง ฉันมีมากกว่า 6 ปุ่มและแน่นอนว่าค่าเริ่มต้นMaxAuthTriesคือ 6 (อย่างน้อยใน Ubuntu)

การแก้ปัญหาคือการแก้ไขเป็นเซิร์ฟเวอร์และการเพิ่มขึ้น/etc/ssh/sshd_config MaxAuthTriesฉันตั้งค่าของฉันเป็น 10

#MaxAuthTries 6
MaxAuthTries 10

(หรือแน่นอนเพียงเพิ่มรายการโฮสต์ด้วยคีย์ขวา - ในกรณีนี้ฉันพยายามเข้าสู่ระบบโดยไม่ต้องใช้คีย์)

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