我有一个安装了 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
可能出了什么问题,我该如何解决?希望我提供了足够的信息。虽然我正在学习,但我对系统网络经验不多。提前谢谢您。