SSH控制台登录有效,但SFTP不能,为什么?


17

我正在尝试使用Filezilla进行SFTP,但是它无法连接到服务器,我认为这是由于我的防火墙规则引起的吗?

我可以使用SSH完全正常。SSH的端口是6128。有人可以告诉我,如果SSH已经在起作用,我必须进行哪些更改才能允许通过SSH进行FTP连接?

(这是我的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控制台登录的相同密钥(在Windows btw上为Putty)
十月

2
SFTP 不是通过SSH的FTP。您不必在任何地方“允许FTP”。Filezilla说“没有可用的支持的身份验证方法”这一事实表明它已正确连接到服务器,并且问题与您的防火墙无关。您是如何设置Filezilla来使用您的公钥的?
马戏团猫咪

嗨,欢迎来到Unix&Linux。b / c SFTP与FTP协议共享了其名称的一个组成部分,但除此之外,它们之间没有任何关系。SSH是运行在端口22上的单个协议,它提供了以交互式外壳形式安全连接或通过同一连接传输文件的功能。远程SSH服务器需要允许SFTP连接,因此除了确保Filezilla具有安全连接到服务器的适当密钥外,我还要查看SSH服务器的日志以了解失败原因。
slm

我还要查看一下并验证是否已从服务器本身正确设置了SFTP,是的,您可以使用sftp服务器上的命令行工具进行连接,这有助于在将Filezilla加入混合之前进行验证。digitalocean.com/community/tutorials/…
slm

Answers:


10

要从其他主机访问sftp,请确保已正确安装和配置以下内容。

  • 已安装的OpenSSH服务器
  • 配置的sshd_config
    • PubkeyAuthentication是
    • 子系统sftp internal-sftp
  • 将您的公钥添加到〜/ .ssh / authorized_keys

  • 在端口22 / TCP打开的情况下启动ssh服务器 # /etc/init.d/sshd start

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

最后测试 $ sftp <login>@<hostname>


另一个好主意是使用[[$-!= i ]] && return 检查交互式会话。
OMG-1

1
Subsystem sftp internal-sftp为我做了。/usr/libexec/openssh/sftp-server默认情况下它被设置为默认值,甚至不存在
quietContest

添加Subsystem sftp internal-sftp到sshd_config也对我有用,而Centos上没有其他更改。
科加洛尔19-10-25

2

在我的情况下,用户zsh位于.bashrc文件的顶部,因此他可以放入zsh shell而不是bash。

bash是他的默认外壳。删除此问题已解决。然后chsh user -s /bin/zsh,我为用户保留zsh作为他的默认shell。


其他shell(例如fish)也存在同样的问题。
保罗

1

您的任何.profile文件(例如)中是否有任何文本要发送到控制台(例如echo语句).bashrc?这可能会使sftp连接混乱。看到我 对serverfault的类似问题的回答


确实要小心。如果您自动启动其他控制台,fish将导致类似问题。
保罗

1

您的防病毒软件也可能导致这种情况。我们最近遇到了它。ssh通过PuTTY可以正常工作,但是WinSCP无法连接。一旦在反病毒中配置了例外,便开始工作。


0

如果您使用的是filezilla,以下答案对我有帮助:

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

在Filezilla中,选择菜单“编辑”->“设置”,在左侧面板上,展开“连接”->“ SFTP”。在右侧,请确保您具有正确的私钥文件,如果缺少正确的条目,请添加。

使用DO Web控制台,以root用户身份登录并执行“ tail -f /var/log/auth.log”。然后尝试使用Filezilla登录并记录所有消息。


0

我对serverfault的类似问题的回答:

我只是遇到了这个问题(特别是对于sftp而不是ssh,我可以毫无问题地连接到那里),这里的解决方案都不适合我。就我而言,这是由于中的ssh键(IdentityFile's)过多~/.ssh/。似乎,当您没有~/.ssh/config尝试使用正确密钥连接的主机的主机条目时,它只会将您所有的密钥一一发送。我有6个以上的键,而且可以肯定的是,默认MaxAuthTries值为6(至少在Ubuntu中)。

解决方案是编辑服务器的/etc/ssh/sshd_config并增加MaxAuthTries。我将我的设为10。

#MaxAuthTries 6
MaxAuthTries 10

(或者,当然,只需使用正确的密钥添加主机条目-在这种情况下,我将尝试不使用密钥进行登录)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.