无法通过 SFTP 连接

无法通过 SFTP 连接

我有一个安装了 vsftp 的 Ubuntu18 VPS。我有一个客户端 MacBook HighSierra。

最近刚安装了 VPS,由于我是网络新手,所以我使用了教程来配置它 - 除了 TCP 包装器和 fail2ban,我会在最后处理。我使用带有公钥身份验证的 SSH 访问我的服务器。

现在我需要访问 FTP,因此我在服务器上安装了 vsftp,如下所示教程。我可以从服务器使用 FTP,但不能从客户端计算机(我的 Mac)使用。我了解到 HighSierra 需要 SFTP(因为它比 FTP 更安全),但也无法正常工作。

所以我开放的端口ufw status是:

22                         ALLOW       Anywhere                  
80                         ALLOW       Anywhere                  
443                        ALLOW       Anywhere                  
20                         ALLOW       Anywhere                  
20/tcp                     ALLOW       Anywhere                  
21/tcp                     ALLOW       Anywhere                  
21                         ALLOW       Anywhere                  
22 (v6)                    ALLOW       Anywhere (v6)             
80 (v6)                    ALLOW       Anywhere (v6)             
443 (v6)                   ALLOW       Anywhere (v6)             
20 (v6)                    ALLOW       Anywhere (v6)             
20/tcp (v6)                ALLOW       Anywhere (v6)             
21/tcp (v6)                ALLOW       Anywhere (v6)             
21 (v6)                    ALLOW       Anywhere (v6)

我的/etc/ssh/sshd_config文件如下所示(请注意,我有一个“my-user”用户和一个“my-userftp”用户):

Port 22
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM no
X11Forwarding no
PrintMotd no
UseDNS no
AcceptEnv LANG LC_*
Subsystem   sftp    /usr/lib/openssh/sftp-server
PermitRootLogin no

AllowUsers my-user*

Match Group sftp_users
ChrootDirectory /home/my-userftp/
ForceCommand internal-sftp

这是我的/etc/vsftpd.config

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
chroot_local_user=YES

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO

userlist_enable=YES
userlist_file=/etc/vsftpd.userlist

userlist_deny=NO

tcp_wrappers=YES

user_sub_token=$USER

local_root=/home/$USER/ftp

并且/etc/vsftpd.userlist只写了“my-userftp”。

最后,我的系统上有两个用户:my-user(sudoer 用于一般控制)和 my-userftp(专门用于文件传输,来自 sftp_users 组)。我的文件夹结构如下/home/my-userftp

total 12
4 dr-xr-xr-x 3 nobody  nogroup    4096 Dec 21 13:19 ftp
4 drwxr-xr-x 2 my-userftp sftp_users 4096 Dec 21 15:37 sftp
4 -rw-r--r-- 1 root    root        130 Dec 20 19:09 steps

尝试使用配置(SFTP 协议、my-userftp、用户密码、端口 22)通过 FileZilla 访问时出现错误:

Status:         Connecting to x.x.x.x...
Response:   fzSftp started, protocol_version=8
Command:    open "[email protected]" 22
Command:    Trust new Host-key: Once
Command:    Pass: *************
Error:          Connection reset by peer
Error:          Could not connect to server

然后在 FileZilla 中使用 AuthKey:

Status:         Connecting to x.x.x.x...
Response:   fzSftp started, protocol_version=8
Command:    keyfile "/Users/user/Documents/id_rsa_filezilla.ppk"
Command:    open "[email protected]" 22
Command:    Trust new Hostkey: Once
Command:    Pass: 
Error:          Authentication failed.
Error:          Critical error: Could not connect to server

并且思想终端(在 Mac 上)给了我:

packet_write_wait: Connection to x.x.x.x port 22: Broken pipe
Connection closed

可能出了什么问题,我该如何解决?希望我提供了足够的信息。虽然我正在学习,但我对系统网络经验不多。提前谢谢您。

相关内容