CentOS下ssh sftp配置及許可權設定

2021-06-19 23:54:11 字數 2690 閱讀 9342

運營有異地傳輸檔案的需求,但如果通過qq等即時通訊軟體,不利於檔案的集中管理,不方便。而我們辦公室的內網機器無法提供外網訪問方法,且傳輸的內容不合適放到公共的網盤或者是雲儲存上,所以只能用線上負載較低的伺服器來承擔此項任務。

從技術角度來分析,幾個要求

1、ftp不安全,只能使用sftp

3、使用者只能使用sftp,不能ssh到機器進行操作

3、伺服器磁碟有限,需要對使用者磁碟進行配額

提供sftp服務,可以用系統自帶的internal-sftp,也可以使用vsftpd,這裡需求不多,直接選用internal-sftp。

限制使用者在自己的home目錄下活動,這裡需要使用到chroot,openssh 4.8p1以後都支援chroot,我這裡是centos 6,自帶的openssh已經是5.3p1,足夠了。

可以ssh -v  

來檢視openssh的版本,如果低於4.8p1,需要自行公升級安裝,不在這裡具體介紹了。

假設,有乙個名為sftp的組,,這個組中的使用者只能使用sftp,不能使用ssh,且sftp登入後只能在自己的home目錄下活動

1、建立sftp組

groupadd sftp  

2、建立乙個測試使用者,名為testuser

view plain

print?

useradd -g sftp -s /bin/false testuser  

passwd testuser  

3、sftp組的使用者的home目錄統一指定到/opt/sftp下,按使用者名稱區分,這裡先新建乙個testuser目錄,然後指定testuser的home為/opt/sftp/testuser

mkdir /opt/sftp  

cd /opt/sftp  

mkdir testuser  

usermod -d /opt/sftp/testuser testuser  

4、配置sshd_config

編輯 /etc/ssh/sshd_config

vim /etc/ssh/sshd_config  

找到如下這行,並注釋掉

subsystem      sftp    /usr/libexec/openssh/sftp-server  

新增如下幾行

subsystem       sftp    internal-sftp  

match group sftp  

chrootdirectory /opt/sftp/%u  

forcecommand    internal-sftp  

allowtcpforwarding no  

x11forwarding no  

解釋一下新增的幾行的意思

subsystem       sftp    internal-sftp  

這行指定使用sftp服務使用系統自帶的internal-sftp

match group sftp  

這行用來匹配sftp組的使用者,如果要匹配多個組,多個組之間用逗號分割

也可以匹配使用者

match user testuser  

這樣就可以匹配使用者了,多個使用者名稱之間也是用逗號分割,但我們這裡按組匹配更靈活和方便

chrootdirectory /opt/sftp/%u  

用chroot將使用者的根目錄指定到/opt/sftp/%u,%u代表使用者名稱,這樣使用者就只能在/opt/sftp/%u下活動,chroot的含義,可以參加這裡:

forcecommand    internal-sftp  

指定sftp命令

allowtcpforwarding no  

x11forwarding no  

這兩行,如果不希望該使用者能使用埠**的話就加上,否則刪掉

5、設定chroot目錄許可權

chown root:sftp /opt/sftp/testuser  

chmod 755 /opt/sftp/testuser  

錯誤的目錄許可權設定會導致在log中出現」fatal: bad ownership or modes for chroot directory ******」 的內容

目錄的許可權設定有兩個要點:

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

2、由chrootdirectory指定的目錄開始一直往上到系統根目錄為止都不可以具有群組寫入許可權

所以遵循以上兩個原則

1、我們將/opt/sftp/testuser的所有者設定為了root,所有組設定為sftp

2、我們講/opt/sftp/testuser的許可權設定為755,所有者root有寫入許可權,而所有組sftp無寫入許可權

6、建立sftp使用者登入後可寫入的目錄

照上面設定後,在重啟sshd服務後,testuser已經可以登入,但使用chroot指定根目錄後,根是無法寫入的,所以要新建乙個目錄供testuser上傳檔案。這個目錄所有者為testuser,所有組為sftp,所有者有寫入許可權,而所有組無寫入許可權

mkdir /opt/sftp/testuser/upload  

chown uplus:sftp /opt/sftp/testuser/upload  

chmod 755 /opt/sftp/testuser/upload  

7、重啟sshd服務

service sshd restart  

CentOS5下Subversion的配置

配置 庫 建立乙個帳號用來執行 subversion 服務,我建立的帳號是 svnower 在 svnower 帳號的主目錄下建立乙個路徑 sourcestore 用來建立 庫 使用svnadmin create home svnower sourcestore 進入目錄 home svnower ...

Centos6 4 下puppet yum源配置

1 將光碟配置為yum本地源 2 安裝製作yum倉庫的軟體包和yum priorities管理包 root python geek wget root python geek wget root python geek wget 4 製作puppet源 在使用createrepo 命令建立源時,提示...

centos下安裝使用Redis和相關配置

解壓 root instance d6rdm793 src tar zxvf redis 6.0.6.tar.gz進入解壓生成的資料夾,make instal命令 如果有報錯gcc未安裝,需要先安裝gcc yum y install gcc gcc c libstdc devel root inst...