在Centos 6.6环境使用系统自带的internal-sftp搭建SFTP服务器。

0. 查看openssh的版本
ssh -V
         使用ssh -V 命令来查看openssh的版本,版本必须大于4.8p1,低于的这个版本需要升级。
 
1. 搭建SFTP服务器
Step-1:创建sftp组:
#groupadd sftp 
Step-2:创建一个sftp用户,用户名为mysftp,密码为mysftp
#useradd -g sftp -s /bin/false mysftp  //用户名
#passwd mysftp  //密码
Step-3:sftp组的用户的home目录统一指定到/data/sftp下,按用户名区分,这里先新建一个mysftp目录,
然后指定mysftp的home为/data/sftp/mysftp
#mkdir -p /data/sftp/mysftp 
#usermod -d /data/sftp/mysftp mysftp
Step-4:配置sshd_config
vi /etc/ssh/sshd_config
        找到如下这行,用#符号注释掉,大致在文件末尾处。
       #Subsystem      sftp    /usr/libexec/openssh/sftp-server 
       在文件最后面添加如下几行内容,然后保存。
     Subsystem       sftp    internal-sftp   
     Match Group sftp 
     ChrootDirectory /data/sftp/%u 
     ForceCommand    internal-sftp 
     AllowTcpForwarding no 
     X11Forwarding no  
Step-5:设定Chroot目录权限
#chown root:sftp /data/sftp/mysftp  
#chmod 755 /data/sftp/mysftp
Step-6:建立SFTP用户登入后可写入的目录
照上面设置后,在重启sshd服务后,用户mysftp已经可以登录。
但使用chroot指定根目录后, 根应该是无法写入的,所以要新建一个目录供mysftp上传文件。
这个目录所有者为mysftp,所有组为sftp,所有者有写入权限,而所有组无写入权限。命令如下:# mkdir /data/sftp/mysftp/upload 
# chown mysftp:sftp /data/sftp/mysftp/upload  
# chmod 755 /data/sftp/mysftp/upload 
Step-7:修改/etc/selinux/config
#vi /etc/selinux/config  
将文件中的SELINUX=enforcing 修改为 SELINUX=disabled ,然后保存。在输入命令
#setenforce 0
Step-8:重启sshd服务
#service sshd restart
Step-9:验证sftp环境
Step-10:使用FileZilla FTP Client连接SFTP服务器
 输入主机IP地址、用户名、密码、端口连接SFTP服务器,端口默认为22。

前面的博文中, 我们已经学习了sftp服务器的搭建, 所以这里就不再赘述了, 定sftp服务器的用户名和密码分别为user和password. 下面, 我们来学习一下linux中常用的sftp命令, 当然, 需要linux支持sftp哈。
       1. sftp user@ip
            你要用sftp, 当然得登录到sftp服务器啊, 在linux的shell中执行上面的命令后, linux shell会提示用户输入密码, 我们就输入password吧。 这样就成功建立了sftp连接。
       2. help
           建立连接后, linux shell中的$编程了sftp>,  这也对。 现在执行以下help, 可以看看sftp支持哪些命令。
       3. pwd和lpwd
           pwd是看远端服务器的目录, 即sftp服务器默认的当前目录。  lpwd是看linux本地目录。
       4. ls和lls
           ls是看sftp服务器下当前目录下的东东, lls是看linux当前目录下的东东。
       5. put a.txt
           这个是把linux当前目录下的a.txt文件上传到sftp服务器的当前目录下。
        6. get b.txt
          这个是把sftp服务器当前目录下的b.txt文件下载到linux当前目录下。
         7. !command
            这个是指在linux上执行command这个命令, 比如!ls是列举linux当前目录下的东东, !rm a.txt是删除linux当前目录下的a.txt文件。
            这个命令非常非常有用, 因为在sftp> 后输入命令, 默认值针对sftp服务器的, 所以执行rm a.txt删除的是sftp服务器上的a.txt文件, 而非本地的linux上的a.txt文件。
         8. exit和quit
             退出。
         总之, 连接后, 有一个help命令, 足矣足矣。

猜你喜欢

转载自blog.csdn.net/qq_37884970/article/details/80941859
今日推荐