ssh/sftp配置和權限設置

導讀 基於 ssh 的 sftp 服務相比 ftp 有更好的安全性(非明文賬號密碼傳輸)和方便的權限管理(限制用戶的活動目錄)。

ssh/sftp配置和權限設置ssh/sftp配置和權限設置
一、開通 sftp 賬號,使用戶只能 sftp 操做文件, 而不能 ssh 到服務器html

二、限定用戶的活動目錄,使用戶只能在指定的目錄下活動,使用 sftp 的 ChrootDirectory 配置linux

肯定版本shell

#確保 ssh 的版本高於 4.8p1 不然升級一下 通常都高於這個版本
ssh -V安全

新建用戶和用戶組bash

#添加用戶組 sftp
groupadd sftp
#添加用戶 指定家目錄 指定用戶組 不容許shell登陸
useradd -d /home/sftp -m -g sftp -s /bin/false sftp
#設置用戶密碼
passwd sftp服務器

活動目錄ssh

#設定你想要限定的活動目錄
mkdir -p /var/www/sftp
#配置權限 注意此目錄若是用於後續的 chroot 的活動目錄 目錄全部者必須是 root 必須是!!!
chown root.sftp /var/www/sftprest

基本的 ssh 配置server

# ssh 服務的配置文件
vi /etc/ssh/sshd_confightm

#基本的ssh遠程登陸配置
#開啓驗證
PasswordAuthentication yes
#禁止空密碼登陸
PermitEmptyPasswords no
#開啓遠程登陸
PermitRootLogin yes
至此你就可使用 ssh 遠程登陸服務器了

配置 sftp

#這裏咱們使用系統自帶的 internal-sftp 服務便可知足需求
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp

Subsystem

Subsystem 是說 ssh 的子模塊 這裏啓用的即爲 sftp 模塊,咱們使用系統自帶的 internal-sftp 來提供此服務,其實配置到這你便可以使用賬號 ssh 登陸,也可使用 ftp 客戶端 sftp 登陸。

若是你但願用戶只能 sftp 而不能 ssh 登陸到服務器,並且要限定用戶的活動目錄,繼續看下面的配置

#對登陸用戶的限定
Match Group sftp
ChrootDirectory /var/www/sftp # 還能夠用 %h表明用戶家目錄 %u表明用戶名
ForceCommand internal-sftp # 強制使用系統自帶的 internal-sftp 服務 這樣用戶只能使用ftp模式登陸
AllowTcpForwarding no
X11Forwarding no

Match [User|Group] userName|groupName

Match [User|Group] sftp 這裏是對登陸用戶的權限限定配置 Match 會對匹配到的用戶或用戶組起做用 且高於 ssh 的通項配置

ChrootDirectory 用戶的可活動目錄 能夠用 %h 標識用戶家目錄 %u 表明用戶名 當 Match 匹配的用戶登陸後 會話的根目錄會切換至此目錄 這裏要尤爲注意兩個問題

一、 chroot 路徑上的全部目錄,全部者必須是 root,權限最大爲 0755,這一點必需要注意並且符合 因此若是以非 root 用戶登陸時,咱們須要在 chroot 下新建一個登陸用戶有權限操做的目錄

二、chroot 一旦設定 則相應的用戶登陸時會話的根目錄 "/" 切換爲此目錄,若是你此時使用 ssh 而非 sftp 協議登陸,則頗有可能會被提示:

/bin/bash: No such file or directory
這則提示很是的正確,對於此時登陸的用戶,會話中的根目錄 "/" 已經切換爲你所設置的 chroot 目錄,除非你的 chroot 就是系統的 "/" 目錄,不然此時的 chroot/bin 下是不會有 bash 命令的,這就相似添加用戶時設定的 -s /bin/false 參數,shell 的初始命令式 /bin/false 天然就沒法遠程 ssh 登陸了

ForceCommand 強制用戶登陸會話時使用的初始命令 若是如上配置了此項 則 Match 到的用戶只能使用 sftp 協議登陸,而沒法使用 ssh 登陸 會被提示

This service allows sftp connections only.
配置完成 重啓 sshd 服務

service sshd restart
注意:

一、chroot 可能帶來的問題,由於 chroot 會將會話的根目錄切換至此,因此 ssh 登陸極可能會提示 /bin/bash: No such file or directory 的錯誤,由於此會話的路徑會爲 chroot/bin/bash

二、ForceCommand 爲會話開始時的初始命令 若是指定了好比 internal-sftp,則會提示 This service allows sftp connections only. 這就如同 usermod -s /bin/false 命令同樣,用戶登陸會話時沒法調用 /bin/bash 命令,天然沒法 ssh 登陸服務器

原文來自: https://www.linuxprobe.com/ssh-sftp-configuration.html

相關文章
相關標籤/搜索