我需要在 EC2 上设置一个支持密码和证书登录的 FTP 服务器和 SFTP 服务器。我刚刚使用了原版 RHEL 和 Amazon AMI,但我无法登录。
$ sudo yum install vsftpd
$ sudo adduser someuser
$ sudo passwd someuser
#edit /etc/ssh/sshd_config
PasswordAuthentication yes
#Comment out this line on /etc/pam.d/vsftpd for good measure, read about it elsewhere
#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
$ sudo systemctl start vsftpd
我的 vsftpd 配置如下
#edit /etc/vsftpd/vsftpd.conf to disable anon login
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
我完成所有这些操作后,尝试从另一台主机进行连接。SFTP 因以下错误而挂起,我必须按 Ctrl+C 才能退出 sftp。
$ sftp -v -P 21 someuser@ec2host
...
debug1: ssh_exchange_identification: 530 Please login with USER and PASS.
我希望系统提示输入密码并查看用户目录!注意:sftp 在常规 sshd 安装下针对端口 22 运行。知道我做错了什么吗?
答案1
sftp
互联网上似乎对 SSH 文件传输客户端和带有 SSL ftps 的 FTP(参见 http->https)存在很多混淆。
vsftpd 不支持sftp
连接。要ftps
进行连接,您需要 SSL 密钥+证书,以及适当的配置,例如
rsa_cert_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES
然后你需要使用支持 ftps 的 FTP 客户端(例如lftp
)
ProFTPd 服务器有一个可以启用的 SFTP 模块,但它不能与常规 FTP 共享同一端口,因为它是一种完全不兼容的协议。您需要在非标准端口上运行它,或者将 openssh 服务器移动到非标准端口,让 proftpd 监听端口 22。
答案2
尽管它的名字sftp
与 FTP 完全无关。它使用的不是同一种协议。它是一个通过 ssh 连接传输文件的 ssh 客户端,而不是 FTP 客户端。SFTP 不能用于连接到 FTP 服务器。