sftp基本介紹與搭建和使用

ssh下載地址:

https://mina.apache.org/sshd-project/downloads.html

 

sftp基本介紹:

sftp是Secure File Transfer Protocol的縮寫,安全文件傳送協議。可以爲傳輸文件提供一種安全的加密方法。sftp 與 ftp有着幾乎一樣的語法和功能。SFTP 爲 SSH的一部份,和vsftpd一點關係沒有,是一種傳輸檔案至 Blogger 伺服器的安全方式。本身沒有守護進程,是包含在ssh中,默認端口也是22。

sftp服務器有兩種搭建方式:

1、直接在系統上新建一個用戶即可,此種方式最簡單,但最不安全,用戶sftp登陸之後可以隨意切換目錄,切用戶可以ssh登陸到系統,很不安全,生產環境中不會這麼幹,故不介紹;

2、標準sftp的搭建

 

 

sftp搭建 方式1

##系統已經有並且啓動了ssh服務的情況下;

1.添加sftp用戶

adduser user1

passwd user1

usermod -s /bin/false user1

usermod -d /data/wwwroot/user1/ user1

 

2.修改sftp配置

vi /etc/ssh/sshd_config

##找到 Subsystem sftp 這一行,修改成:

Subsystem sftp internal-sftp

UsePAM yes

Match user user1

ForceCommand internal-sftp

ChrootDirectory /data/wwwroot/user1/

##多個用戶請重複配置這三行:

Match user user2

ForceCommand internal-sftp

ChrootDirectory /data/wwwroot/user2/

 

3.設置sftp用戶目錄和權限

mkdir /data/wwwroot/user1/upload chown -R sftpuser1:root /data/wwwroot/user1/upload

chmod -R 755 /data

chmod -R 775 /data/wwwroot/user1/upload

 

4.啓動ssh服務

service sshd restart                        ##重啓ssh服務

或者

/etc/init.d/sshd restart

或者

kill -9 `ps -ef| grep "/usr/sbin/sshd -D" | awk '{print $2}'` >/dev/null 2>&1

/usr/sbin/sshd -D &

 

給sftp新用戶的家目錄的權限設定有幾個要點:

1、由 ChrootDirectory 指定的目錄開始一直往上到系統根目錄爲止的目錄擁有者都只能是 root

2、由 ChrootDirectory 指定的目錄開始一直往上到系統根目錄爲止都不可以具有羣組寫入權限(最大權限 755)

3.如果需要添加管理員用戶,可以設置ChrootDirectory目錄屬組爲sftp,然後把所有的用戶和管理員用戶屬組均改爲sftp.具體可參考Dockerfile實例部分。

或者通過軟鏈接實現:

ln -s /sftp/wwwroot /sftp/wwwroot/admin

password=`mkpasswd admin`;useradd -b /sftp/admin admin;echo "admin:$password" | chpasswd;echo $password

 

 

SFTP搭建 方式2

##在沒有ssh的鏡像或者系統中;以及通過用戶組方式控制sftp用戶登陸;

 

1.ssh安裝配置

yum install -y curl tar unzip which sudo initscripts openssh-server openssh-clients rsync

yum install -y libaio.so.1* ll* vim*

yum update -y libselinux

 

echo 'root'| passwd --stdin root

ssh-keygen -q -N "" -t dsa -f /etc/ssh/ssh_host_dsa_key

ssh-keygen -q -N "" -t rsa -f /etc/ssh/ssh_host_rsa_key

ssh-keygen -q -N "" -t rsa -f /root/.ssh/id_rsa

ssh-keygen -q -N "" -t rsa -f /etc/ssh/ssh_host_ecdsa_key

ssh-keygen -q -N "" -t rsa -f /etc/ssh/ssh_host_ed25519_key

cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys

 

sed -i "/^[^#]*UsePAM/ s/.*/#&/" /etc/ssh/sshd_config

echo "Port=39535" >> /etc/ssh/sshd_config

 

###添加sftp用戶

groupadd sftp

cat /etc/group

mkdir -p /data/sftp

useradd -d /data/sftp/mysftp -s /bin/false -g sftp mysftp

rm -rf /data/sftp/mysftp/.bash*

echo mysftp |passwd --stdin mysftp

 

##編輯sftp配置

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

 

備註:

# 註釋掉該行

# Subsystem sftp /usr/lib/openssh/sftp-server

# 使用系統默認的sftp服務

Subsystem sftp internal-sftp

# 匹配組名 sftp

Match Group sftp

# 指定活動目錄

ChrootDirectory /data/sftp/%u

# 由ChrootDirectory指定的目錄開始一直往上到系統根目錄的目錄屬主都是root.

# 由ChrootDirectory指定的目錄開始一直往上到系統根目錄都不可以具有羣組寫入權限.

# 禁用端口轉發

AllowTcpForwarding no

X11Forwarding no

# 強制執行內部SFTP,並忽略任何~/.ssh/rc中的命令

ForceCommand internal-sftp

 

##設置Chroot目錄權限

chown root:sftp /data

chown root:sftp /data/sftp

chown root:sftp /data/sftp/mysftp

chmod 755 /data/sftp/mysftp

 

##新建一個目錄供sftp用戶mysftp上傳文件

mkdir /data/sftp/mysftp/upload

chown mysftp:sftp /data/sftp/mysftp/upload

chmod 755 /data/sftp/mysftp/upload

 

##啓動sshd服務

service sshd start

或者

/usr/sbin/sshd -D &

 

##驗證sftp登陸使用:

sftp -P 39535 mysftp@localhost

 

##新建測試用戶:

useradd -d /data/sftp/119sftp -s /bin/false -g sftp 119sftp

rm -rf /data/sftp/119sftp/.bash*

echo 119sftp |passwd --stdin 119sftp

chown root:sftp /data/sftp/119sftp

mkdir /data/sftp/119sftp/upload

chown 119sftp:sftp /data/sftp/119sftp/upload

chmod 755 /data/sftp/119sftp

chmod 755 /data/sftp/119sftp/upload

 

##登陸測試

sftp -P 39535 119sftp@localhost

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章