一分钟在Linux环境下创建一台SFTP服务器(含账户创建)
2017-12-19 21:36
369 查看
FTP是比较常见的一种服务了,很多公司都会有可能使用到FTP服务器,本文将以最简洁的办法使用系统自带的ssh软件在1分钟内搭建一台使用方便的FTP服务器。
SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP为SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。执行以下脚本在一分钟之内即可完成SFTP服务器的搭建。
在以上脚本中有几个关键点:
1、用户目录。出于安全考虑,分别创建独立用户根目录,如果多个用户都在同一个根目录下,其他用户是可以看到别人的用户目录的,这也就是执行创建/home/UserName/UserName的目的所在。这也是与网上大部分文章不同的地方之一。当然,用户目录不一定需要用户的home目录,只要用户对目录具有所有权都是可以的。
2、禁止用户的ssh登录,本方案中使用的指定登录脚本为/bin/false,当然也还有其他方案。
3、修改配置文件。在本方案中,涉及到配置文件的2个地方的修改。Subsystem这一行的修改,Match User $UserName后面需要加一行来指定用户根目录。
SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP为SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。执行以下脚本在一分钟之内即可完成SFTP服务器的搭建。
#!/bin/bash #=============================================================================== # FILE: SftpCreate.sh # USAGE: ./SftpCreate.sh # DESCRIPTION: Create a Sftp Server # OPTIONS: None # REQUIREMENTS: Nene # AUTHOR: Geeklp (IVAN DU), geeklp@qq.com # ORGANIZATION: GEEKLP # CREATED: 2017年12月19日 10时29分12秒 # REVISION: V1.1 #=============================================================================== set -o nounset # Treat unset variables as an error Users=('chinapay' 'ctbx' 'haoyilian' 'hbgyl' 'huaxia' 'jczh' 'kjb' 'lykj' 'lzkj' 'msyh' 'nyjt' 'pingan' 'xldz' 'yigw' 'yytwallet') PassWord='Neoby1314' #modify the /etc/ssh/sshd_config sed -i '/Subsystem/s/^/#/' /etc/ssh/sshd_config sed -i '/^#Subsystem/a\Subsystem sftp internal-sftp' /etc/ssh/sshd_config #---------Create SFTPUsers---------- for UserName in ${Users[@]}; do id -u $UserName>& /dev/null if [ $? -ne 0 ]; then mkdir /home/$UserName #创建用户SFTP的root目录 adduser $UserName -d /home/$UserName/$UserName #创建用户并指定用户目录 echo "The account $UserName was created!" echo $PassWord | passwd $UserName --stdin #从标准输入流中读取密码 usermod -s /bash/false $UserName #禁止ssh登录 echo " Match User $UserName X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp ChrootDirectory /home/$UserName">>/etc/ssh/sshd_config else echo "The username $UserName was existed!" fi done systemctl restart sshd #----------END-----------------------
在以上脚本中有几个关键点:
1、用户目录。出于安全考虑,分别创建独立用户根目录,如果多个用户都在同一个根目录下,其他用户是可以看到别人的用户目录的,这也就是执行创建/home/UserName/UserName的目的所在。这也是与网上大部分文章不同的地方之一。当然,用户目录不一定需要用户的home目录,只要用户对目录具有所有权都是可以的。
2、禁止用户的ssh登录,本方案中使用的指定登录脚本为/bin/false,当然也还有其他方案。
3、修改配置文件。在本方案中,涉及到配置文件的2个地方的修改。Subsystem这一行的修改,Match User $UserName后面需要加一行来指定用户根目录。
相关文章推荐
- 实例浅谈Linux环境下搭建Web服务器与创建个人主页
- ahjesus linux连接阿里云ubuntu服务器更改默认账号和密码、创建子账户的步骤
- linux环境下,连接另一台服务器的oracle数据库,常见问题详解
- ahjesus linux连接阿里云ubuntu服务器并更改默认账号和密码,以及创建子账户
- linux下不同服务器间数据传输(rcp,scp,rsync,ftp,sftp,lftp,wget,curl)
- Linux系统 conda 创建python虚拟环境
- 基于Linux环境Tomcat-MySQL的服务器搭建
- Linux环境下建立yum仓库及简单搭建httpd服务器
- Linux下Web服务器环境搭建LNMP一键安装包 v2.5[20140702更新]
- 如何在服务器(Linux)里面定时(crontab)执行需要虚拟环境(venv)的代码(爬虫)
- 如何在Linux环境创建GRE Tunnel
- 使用VMWare虚拟机创建CentOS版本的Linux学习环境(每一步都有截图与说明)
- Linux 下搭建jsp服务器(配置jsp开发环境)
- 超简单不用samba不用任何FTP软件或客户端一分钟搞定linux的FTP服务器
- Linux环境下快速搭建ftp服务器方法介绍
- linux环境下搭建nginx服务器
- Linux下从零开始安装配置Nginx服务器+PHP开发环境
- LINUX环境下Samba服务器的简单搭建教程
- linux环境下创建和删除软链接
- 搭建测试环境linux静态链接库与动态链接库的区别及动态库的创建