之前我服務(wù)器是使用的Windows Server 2003
铁追,這段時間由于訪問量變大我還是機(jī)智的換成Linux
了咳燕,在搭建FTP的時候看到網(wǎng)上都是推薦vsftpd
勿决,不過我不推薦這個家伙,看官且看下文招盲。
我推薦使用SSH
自帶的SFTP
低缩,SFTP
是Secure File Transfer Protocol
的縮寫,安全文件傳送協(xié)議曹货。SFTP
使用加密傳輸認(rèn)證信息和傳輸?shù)臄?shù)據(jù)咆繁,所以使用SFTP
是非常安全的。SFTP
之于FTP
可以理解為Https
之于Http
控乾,由于這種傳輸方式使用了加密/解密
技術(shù)么介,所以傳輸效率比普通的FTP
要低得多,如果您對網(wǎng)絡(luò)安全性要求更高時蜕衡,可以使用SFTP
代替FTP
壤短。
**本文最終的效果:**在Linux
下建立sftp-users
用戶組设拟,在該組下建多個用戶,禁止該組所有用戶ssh
遠(yuǎn)程登錄服務(wù)器久脯,但是允許該組所有用戶登錄sftp
纳胧,并只能訪問自己的目錄及子目錄中的文件。
本文以admin
用戶為例帘撰,下面出現(xiàn)的admin
均指該用戶或者該用戶目錄跑慕。
安裝ssh和openssh-sftp-server
其實(shí)Linux
發(fā)行版基本都是安裝了OpenSSH
的,不過我們這里還是確認(rèn)一下是否安裝摧找,
一般我們需要安裝openssh-server
核行、openssh-sftp-server
,所以我們檢查是否安裝了SSH蹬耘。
- Ubuntu檢查是否安裝了OpenSSH
dpkg --get-selections | grep openssh
- CentOS檢查是否安裝了OpenSSH
# 以yum方式安裝的:
yum list installed openssh
# 以rpm包安裝的:
rpm -qa | grep openssh
# 以deb包安裝的:
dpkg -l | grep openssh
如果已經(jīng)三個包都安裝了芝雪,那么你的命令行該是如下:
openssh-server installed
openssh-sftp-server installed
...
哪個沒有打印就是沒有安裝,安裝即可综苔。
- Ubuntu 安裝惩系,依次執(zhí)行以下命令,
install
后面只寫沒有安裝的包名即可
sudo apt-get update
sudo apt-get install openssh-client openssh-server openssh-sftp-server
- CentOS 安裝如筛,
install
后面只寫沒有安裝的包名即可
sudo yum install openssh-client openssh-server openssh-sftp-server
如果都是安裝的堡牡,我們需要保證OpenSSH
的版本不得低于4.8
,因?yàn)槲覀円?code>ChrootDirectory配置用戶訪問目錄杨刨,所以檢查下SSH
的版本晤柄,執(zhí)行命令ssh -V
會打印出如下版本信息:
OpenSSH_6.6.1 Ubuntu-2ubuntu2, OpenSSL 1.0.1f...
如果SSH
的版本低于4.8
,需要升級拭嫁。
- Ubuntu升級SSH
sudo apt-get update
sudo apt-get install openssh-server
- CentOS升級SSH
sudo yum update -y openssh-server
建立用戶組和用戶
我們要建立一個專門管理sftp
用戶的用戶組可免,方便我們管理權(quán)限。
1做粤、建立一個名為sftp-users
的sftp
用戶組
sudo groupadd sftp-users
2浇借、在該組建立幾個需要登錄sftp
的用戶
新建用戶名為admin
的用戶:
sudo useradd -g sftp-users -m admin
修改admin
的密碼:
passwd admin
然后連續(xù)兩次輸入你要給該用戶設(shè)置的密碼即可。
3怕品、如果該用戶已存在妇垢,但是不在sftp-users
組中,可以移動用戶到改組
usermod –g sftp_users admin
配置ssh和權(quán)限
1肉康、打開/etc/ssh/sshd_config
文件
2闯估、修改X11Forwarding
的值為no
,原來可能是:X11Forwarding yes
吼和,現(xiàn)在修改為X11Forwarding no
涨薪,如果X11Forwarding
不存在,就在文件最后添加上面的代碼炫乓。
修改AllowTcpForwarding
的值為no
刚夺,原來可能是AllowTcpForwarding yes
献丑,現(xiàn)在修改為AllowTcpForwarding no
,如果AllowTcpForwarding
不存在侠姑,就在文件最后添加上面的代碼创橄。
3、修改Subsystem sftp
為internal-sftp
Subsystem sftp /usr/libexec/openssh/sftp-server
# 或者
Subsystem sftp /usr/lib/openssh/sftp-server
現(xiàn)在修改為:
Subsystem sftp internal-sftp
4莽红、在文件末尾增加內(nèi)容
Match Group sftp-users
ChrootDirectory %h
ForceCommand internal-sftp
-
Match Group sftp-users
這一行是指定以下的子行配置是匹配sftp-users
用戶組的妥畏,多個用戶組用英文逗號分隔。 -
ChrootDirectory %h
該行指定Match Group
行指定的用戶組驗(yàn)證后用于chroot
環(huán)境的路徑安吁,也就是默認(rèn)的用戶目錄醉蚁,比如/home/admin
;也可以寫明確路徑鬼店,例如/data/www
馍管。 -
ForceCommand internal-sftp
該行強(qiáng)制執(zhí)行內(nèi)部sftp
,并忽略任何~/.ssh/rc
文件中的命令薪韩。
這里要特別注意,因?yàn)?code>ChrootDirectory %h模式捌锭,所以我們等下要設(shè)置sftp-users
中的所有用戶的用戶目錄權(quán)限為root
擁有俘陷,否則sftp-users
組中的用戶無法用sftp
登錄。
修改sftp-users
用戶組用戶目錄權(quán)限
上面說了观谦,因?yàn)槭褂昧?code>ChrootDirectory %h拉盾,現(xiàn)在來修改權(quán)限。
1豁状、修改權(quán)限為root
用戶擁有
chown root /home/admin
2捉偏、修改權(quán)限為root
可讀寫執(zhí)行,其它用戶可讀
chmod 755 /home/admin
3泻红、重啟ssh夭禽,登錄sftp
sudo service ssh restart
現(xiàn)在就可以使用sftp
登錄了,但是我們發(fā)現(xiàn)谊路,我們不能上傳文件讹躯,那是因?yàn)榈卿浐竽J(rèn)是用戶目錄,比如/home/admin
缠劝,但是該目錄是root
用戶擁有潮梯,因此我們還要修改權(quán)限。
注意:centos7重啟ssh的命令是
sudo systemctl restart sshd.service
惨恭,另外可以設(shè)置ssh為開機(jī)啟動秉馏,命令是sudo systemctl enable sshd.service
。
4脱羡、在用戶目錄下建立子目錄萝究,讓sftp-users
中的用戶可讀寫文件
我們現(xiàn)在在/home/admin
目錄下新建一個upload
文件夾:
cd /home/admin/
mkdir upload
5免都、授權(quán)upload
文件夾讀寫
讓子文件夾upload屬于admin
chown admin /home/admin/upload
讓子文件夾upload被admin讀寫
chmod 755 /home/admin/upload
重啟ssh,登錄sftp
現(xiàn)在全部都配置完了糊肤,如果在上面第三步?jīng)]有重啟ssh
的話琴昆,現(xiàn)在重啟后既可以登錄使用了。
sudo service ssh restart
centos7.x的系統(tǒng)如果執(zhí)行上面這個命令提示不存在馆揉,執(zhí)行:
sudo systemctl restart sshd
Windows
登錄sftp
推薦使用WinScp业舍,Linux
用命令即可,Mac
推薦使用Yummy FTP
升酣。
本文轉(zhuǎn)自 https://blog.csdn.net/yanzhenjie1003/article/details/70184221?spm=1001.2014.3001.5501舷暮,如有侵權(quán),請聯(lián)系刪除噩茄。