场景描述

简单说一下吧,有的客户习惯用FTP,但是也有一些客户考虑到安全,更倾向于SFTP,分开搭两个环境就太麻烦了,Proftpd就解决了这个问题呀,通过简单的配置就可以同时支持FTP和SFTP

注意事项

Proftpd默认配置是只支持FTP,如果我们想要启用SFTP,就需要用到 VirtualHost指令,详细解释直接看官网:

ProFTPD module mod_sftphttp://www.proftpd.org/docs/contrib/mod_sftp.html

VirtualHost directiveshttp://www.proftpd.org/docs/modules/mod_core.html#VirtualHost

<VirtualHost 172.17.37.93>...
</VirtualHost>

配置文件

配置文件(/etc/proftpd/proftpd.conf)参数就不详细介绍了,网上有很多,关键是没有对sftp的配置,下面<IfModule mod_sftp.c> ... </IfModule>就是对sftp的配置,端口可灵活设置

#
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes, reload proftpd after modifications, if
# it runs in daemon mode. It is not required in inetd/xinetd mode.
## Includes DSO modules
Include /etc/proftpd/modules.conf# Set off to disable IPv6 support which is annoying on IPv4 only boxes.
UseIPv6                         on
# If set on you can experience a longer connection delay in many cases.ServerName                      "Debian"
ServerType                      standalone
DeferWelcome                    offMultilineRFC2228                on
DefaultServer                   on
ShowSymlinks                    onTimeoutNoTransfer               600
TimeoutStalled                  600
TimeoutIdle                     1200DisplayLogin                    welcome.msg
DisplayChdir                    .message true
ListOptions                     "-l"DenyFilter                      \*.*/# Use this to jail all users in their homes
# DefaultRoot                   ~# Users require a valid shell listed in /etc/shells to login.
# Use this directive to release that constrain.
# RequireValidShell             off# Port 21 is the standard FTP port.
Port                            21# In some cases you have to specify passive ports range to by-pass
# firewall limitations. Ephemeral ports can be used for that, but
# feel free to use a more narrow range.
# PassivePorts                  49152 65534# If your host was NATted, this option is useful in order to
# allow passive tranfers to work. You have to use your public
# address and opening the passive ports used on your firewall as well.
# MasqueradeAddress             1.2.3.4# This is useful for masquerading address with dynamic IPs:
# refresh any configured MasqueradeAddress directives every 8 hours
<IfModule mod_dynmasq.c>
# DynMasqRefresh 28800
</IfModule># To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances                    30# Set the user and group that the server normally runs at.
User                            proftpd
Group                           nogroup# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask                           022  022
# Normally, we want files to be overwriteable.
AllowOverwrite                  on# Uncomment this if you are using NIS or LDAP via NSS to retrieve passwords:
# PersistentPasswd              off
# This is required to use both PAM-based authentication and local passwords
# AuthOrder                     mod_auth_pam.c* mod_auth_unix.c# Be warned: use of this directive impacts CPU average load!
# Uncomment this if you like to see progress and transfer rate with ftpwho
# in downloads. That is not needed for uploads rates.
#
# UseSendFile                   offTransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log# Logging onto /var/log/lastlog is enabled but set to off by default
#UseLastlog on# In order to keep log file dates consistent after chroot, use timezone info
# from /etc/localtime.  If this is not set, and proftpd is configured to
# chroot (e.g. DefaultRoot or <Anonymous>), it will use the non-daylight
# savings timezone regardless of whether DST is in effect.
#SetEnv TZ :/etc/localtime<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule><IfModule mod_ratio.c>
Ratios off
</IfModule># Delay engine reduces impact of the so-called Timing Attack described in
# http://www.securityfocus.com/bid/11430/discuss
# It is on by default.
<IfModule mod_delay.c>
DelayEngine on
</IfModule><IfModule mod_ctrls.c>
ControlsEngine        off
ControlsMaxClients    2
ControlsLog           /var/log/proftpd/controls.log
ControlsInterval      5
ControlsSocket        /var/run/proftpd/proftpd.sock
</IfModule><IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>#
# Alternative authentication frameworks
#
#Include /etc/proftpd/ldap.conf
#Include /etc/proftpd/sql.conf#
# This is used for FTPS connections
#
#Include /etc/proftpd/tls.conf#
# Useful to keep VirtualHost/VirtualRoot directives separated
#
#Include /etc/proftpd/virtuals.conf# A basic anonymous configuration, no upload directories.# <Anonymous ~ftp>
#   User                                ftp
#   Group                               nogroup
#   # We want clients to be able to login with "anonymous" as well as "ftp"
#   UserAlias                   anonymous ftp
#   # Cosmetic changes, all files belongs to ftp user
#   DirFakeUser on ftp
#   DirFakeGroup on ftp
#
#   RequireValidShell           off
#
#   # Limit the maximum number of anonymous logins
#   MaxClients                  10
#
#   # We want 'welcome.msg' displayed at login, and '.message' displayed
#   # in each newly chdired directory.
#   DisplayLogin                        welcome.msg
#   DisplayChdir                .message
#
#   # Limit WRITE everywhere in the anonymous chroot
#   <Directory *>
#     <Limit WRITE>
#       DenyAll
#     </Limit>
#   </Directory>
#
#   # Uncomment this if you're brave.
#   # <Directory incoming>
#   #   # Umask 022 is a good standard umask to prevent new files and dirs
#   #   # (second parm) from being group and world writable.
#   #   Umask                           022  022
#   #            <Limit READ WRITE>
#   #            DenyAll
#   #            </Limit>
#   #            <Limit STOR>
#   #            AllowAll
#   #            </Limit>
#   # </Directory>
#
# </Anonymous># Include other custom configuration files
Include /etc/proftpd/conf.d/
DefaultRoot ~
AllowForeignAddress OFF
AuthUserFile /etc/ftpd.passwd<IfModule mod_rlimit.c>RLimitMemory session 4G
</IfModule><IfModule mod_sftp.c><VirtualHost 0.0.0.0>ServerName "SFTP Server"DefaultRoot ~SFTPEngine onPort 2223SFTPLog /var/log/proftpd/sftp.log# Configure both the RSA and DSA host keys, using the same host key# files that OpenSSH uses.SFTPHostKey /etc/ssh/ssh_host_rsa_keySFTPHostKey /etc/ssh/ssh_host_dsa_key# SFTPAuthMethods publickeySFTPAuthMethods passwordSFTPAuthorizedUserKeys file:/etc/proftpd/authorized_keys/%uAuthUserFile /etc/sftpd.passwd# Enable compressionSFTPCompression delayed</VirtualHost>
</IfModule><Directory "/vol/SFF"><Limit WRITE></Limit>
</Directory><Directory "/vol/SF"><Limit WRITE></Limit>
</Directory>

如果FTP跟SFTP是同一个用户,需要注意:

1. 密码文件最好分开(例如:FTP -- /etc/ftpd/passwd,SFTP -- /etc/sftpd.passwd)

2. 密码可以相同,但是需要使用ftpasswd两次,分别生成自己的密钥

echo 1 | ftpasswd --passwd --stdin --file /etc/ftpd.passwd --gid 2005 --uid 2005 --shell /bin/bash --name china --home /vol/ss3echo 1 | ftpasswd --passwd --stdin --file /etc/sftpd.passwd --gid 2005 --uid 2005 --shell /bin/bash --name china --home /vol/ss3

可以看到密钥是不一样的

比较奇怪的现象:

如果我们SFTP和FTP的用户使用的校验文件是同一个(例如都是/etc/ftpd.passwd),那么如果启用了SFTP,通过设定的账号密码是可以正常访问的,但是访问FTP时就会提示密码错误,个人猜想,这里可能是SFTP校验时会通过ssh将密钥编码,那FTP再次使用这个账号密码登录时自然就是不对的(只是个人看法~)

日志报错如下:

ubtuntu Proftpd 同时支持SFTP和FTP相关推荐

  1. Sftp和ftp 区别、工作原理等(汇总ing)

    Sftp和ftp over ssh2的区别 最近使用SecureFx,涉及了两个不同的安全文件传输协议: -sftp -ftp over SSH2 这两种协议是不同的. sftp是ssh内含的协议,只 ...

  2. java ftp分片续传_Java写的支持断点续传的FTP

    Java写的支持断点续传的FTP 很不错的值得研究一下,结构比较清楚. 基类一: package ming.ftpsearch; public class FileInfo { public Stri ...

  3. [SlickEdit] SlickEdit支持目录别名FTP控件更新

    有阵没写代码了,SlickEdit升级到2009还没怎么用过,Option面板改动得更像Eclipse了,反正IDE工具也不知道到底谁抄袭谁,只是Symbol Coloring设置太唬人了吧,,默认的 ...

  4. Ubuntu连接SSHHow to: Connect SSH, SFTP and FTP Servers using Nautilus ubuntu 13.04

    In this article i am going to show you how to connect SSH, SFTP and FTP servers using Nautilus in ub ...

  5. flashfxp支持sftp了

    flashfxp支持sftp了 这又让你多了一种选择在windows下, 之前我还用了secureFX,不过我没有用起来 posted on 2010-08-13 21:07 lexus 阅读(... ...

  6. 让梅林R6400支持sftp协议

    说明 通常linux中ssh默认支持sftp,梅林路由器中的ssh是精简版,不支持sftp协议. 自带的配置不支持,是否有有办法呢?我们可以先装entware-setup.sh,然后用opkg安装sf ...

  7. 一个Windows远程工具,小巧但实用,支持RDP、SSH、SFTP、FTP等多种协议

    上次给大家推荐<一个C#开发的Windows远程桌面工具>,这个项目是基于 MSTSC的远程桌面工具,今天给大家推荐另外一个远程桌面工具,该工具小巧但非常实用.体验也非常好,支持多种协议连 ...

  8. sftp取代ftp的之后的权限设置

    一,openssh 版本要4.81以上 不是这个版本的话,要升级. 二,我们的客户网站全部放在/home目录下,建立网站目录文件夹并且每个网站文件夹命令为www.a.com www.b.com 三,以 ...

  9. sftp shell 批量上传文件_shell脚本进行sftp、ftp文件批量上传与下载

    SFTP传送:若使用SecureCRT,按下ALT+P开启新的会话即进行sftp操作 输入help命令,显示该SFTP提供所有的命令cd 路径 更改远程目录到"路径" lcd 路径 ...

最新文章

  1. Mac OS 上安装 PostgreSQL
  2. 学习 OpenStack 的方法论 - 每天5分钟玩转 OpenStack(150)
  3. Rsync+inotify搭建使用
  4. FFmpg音视频入门教程
  5. 贪心算法(leetcode分类解题,C++代码详细注释)
  6. P1068 分数线划定 洛谷 (C++)(结构体排序)
  7. python平均数 中位数函数_R和python语言如何求平均值,中位数和众数
  8. 华为Mate 40正式发布:4999元起、买吗?
  9. 优化网站设计:减少DOM元素的数量
  10. 解决文件名太长或文件夹路径太深无法删除
  11. 三维地图前端js api对比分析
  12. 输入数字怎么变成大写python_用Python将数字转换为中文大写
  13. java工程师英文简历_软件工程师英文简历
  14. 主流网站统计系统的评测
  15. MySQL小数数据类型
  16. 使用苹果手机/PAD做树莓派的外接屏幕
  17. 安装玻璃鱼Glassfish
  18. GIS开发人员需要掌握的知识和技能
  19. mysql的flush privileges指令执行必要性问题
  20. Web前端——跨域问题

热门文章

  1. 亚马逊自养号测评技术能全自动下单吗?
  2. Hive中小表与大表关联(join)的性能分析
  3. 如何生成一维条码图片
  4. CMD查看当前文件路径下的所有文件名
  5. 关于IT信息化的一些感想
  6. 为什么使用HashMap需要重写hashcode和equals方法_最通俗易懂搞定HashMap的底层原理...
  7. linux下离线更新nessus漏洞插件的方法
  8. 小米造车,雷军赌上个人声誉的一战
  9. 甘肃民勤农妇戈壁滩建“花花世界” 叩开致富之门
  10. 网络协议 -- 最全的网络协议图