1. 程式人生 > >SFTP 服務搭建

SFTP 服務搭建

span AS 防火 .com back 2.6 ftp服務 mman 一個

1. 介紹

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。

2. sftp搭建

2.1 創建SFTP 主目錄

mkdir -p /data/sftp

2.2 創建SFTP 用戶組

groupadd sftp

2.3 創建FTP用戶,並指定home到SFTP主目錄下

以下創建了3個SFTP用戶

useradd -g sftp -s /sbin/nologin -d /data/sftp/ftp1 ftp1
useradd -g sftp -s /sbin/nologin -d /data/sftp/ftp2 ftp2
useradd -g sftp -s /sbin/nologin -d /data/sftp/ftp3 ftp3

2.4 設置FTP用戶密碼

echo password1 | passwd --stdin ftp1
echo password2 | passwd --stdin ftp2
echo password3 | passwd --stdin ftp3

2.5 修改 sshd_config 配置文件

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

vi /etc/ssh/sshd_config

#找到並註釋
#Subsystem      sftp    /usr/libexec/openssh/sftp-server

#添加
Subsystem       sftp    internal-ftp
Match Group     sftp
ChrootDirectory /data/sftp/%u
ForceCommand    internal-sftp
AllowTcpForwarding no
X11Forwarding no

  

解釋: Subsystem sftp internal-sftp
這行指定使用sftp服務使用系統自帶的internal-sftp
Match Group sftp
這行用來匹配sftp組的用戶,如果要匹配多個組,多個組之間用逗號分割
當然,也可以匹配用戶
Match User mysftp
這樣就可以匹配用戶了,多個用戶名之間也是用逗號分割,但我們這裏按組匹配更靈活和方便
ChrootDirectory /data/sftp/%u
用chroot將用戶的根目錄指定到/data/sftp/%u,%u代表用戶名,這樣用戶就只能在/data/sftp/%u下活動,chroot的含義,可以參考這裏:http://www.ibm.com/developerworks/cn/linux/l-cn-chroot/
ForceCommand internal-sftp
指定sftp命令
AllowTcpForwarding no
X11Forwarding no
這兩行,如果不希望該用戶能使用端口轉發的話就加上,否則刪掉

2.6 修改目錄權限

chown root:sftp /data/sftp/*
chmod 755 /data/sftp/*

解釋: 目錄的權限設定有兩個要點:
1、由ChrootDirectory指定的目錄開始一直往上到系統根目錄為止的目錄擁有者都只能是root
2、由ChrootDirectory指定的目錄開始一直往上到系統根目錄為止都不可以具有群組寫入權限

2.7 創建ftp用戶上傳下載目錄

照上面設置後,在重啟sshd服務後,FTP 用戶已經可以登錄,但使用 chroot 指定根目錄後,根應該是無法寫入的.

mkdir /data/sftp/ftp1/upload
mkdir /data/sftp/ftp2/upload
mkdir /data/sftp/ftp3/upload

chown ftp1:sftp /data/sftp/ftp1/upload
chown ftp2:sftp /data/sftp/ftp2/upload
chown ftp3:sftp /data/sftp/ftp3/upload

chmod 755 /data/sftp/ftp1/upload
chmod 755 /data/sftp/ftp2/upload
chmod 755 /data/sftp/ftp3/upload

2.8 重啟SSHD 服務

service sshd restart

2.9 登錄驗證

[root@test1 ~]# sftp ftp2@localhost
Connecting to localhost...
ftp2@localhost‘s password: 
sftp> dir
upload  
sftp> cd upload
sftp>   lcd /etc
sftp> put passwd
Uploading passwd to /upload/passwd
passwd                                                             100% 1825     1.8KB/s   00:00    
sftp> dir
passwd                      
sftp> 

  

完成! 如果還能不能登錄,請檢查 1.防火墻是否關閉 2.SELINUX 是否關閉
#關閉命令
service iptables stop
chkconfig iptables off

sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g‘ /etc/selinux/config;
setenforce 0 

參考:

http://www.cnblogs.com/flyback/p/6492059.html http://blog.sina.com.cn/s/blog_4fd50c3901018a0l.html

SFTP 服務搭建