我正在尝试使用 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
答案1
要从其他主机访问您的 sftp,请确保正确安装和配置以下内容。
- 安装的 OpenSSH 服务器
- 已配置sshd_配置
- 公钥验证 是
- 子系统 sftp 内部 sftp
将您的公钥添加到 ~/.ssh/authorized_keys
启动 ssh 服务器并打开端口 22/TCP
# /etc/init.d/sshd start
# iptables -I INPUT -j ACCEPT -p tcp --dport 22
最后,测试一下
$ sftp <login>@<hostname>
答案2
就我而言,用户位于zsh
其 .bashrc 文件的顶部,以便他可以进入 zsh shell 而不是 bash。
bash 是他的默认 shell。删除这个解决了这个问题。然后我chsh user -s /bin/zsh
让用户保留 zsh 作为他的默认 shell。
答案3
您的任何 .profile 文件中是否有任何文本进入控制台(例如 echo 语句),例如.bashrc
?这可能会扰乱 sftp 连接。看我的 回答关于 serverfault 的类似问题
答案4
如果您使用 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 登录并记下任何消息。