Linux 配置SFTP,配置使用者訪問許可權

2022-08-26 23:51:11 字數 3650 閱讀 2620

之前我伺服器是使用的windows server 2003,這段時間由於訪問量變大我還是機智的換成linux了,在搭建ftp的時候看到網上都是推薦vsftpd,不過我不推薦這個傢伙,看官且看下文。

我推薦使用ssh自帶的sftp,sftp是secure file transfer protocol的縮寫,安全檔案傳送協議。sftp使用加密傳輸認證資訊和傳輸的資料,所以使用sftp是非常安全的。sftp之於ftp可以理解為https之於http,由於這種傳輸方式使用了加密/解密技術,所以傳輸效率比普通的ftp要低得多,如果您對網路安全性要求更高時,可以使用sftp代替ftp。

本文最終的效果:在linux下建立sftp-users使用者組,在該組下建多個使用者,禁止該組所有使用者ssh遠端登入伺服器,但是允許該組所有使用者登入sftp,並只能訪問自己的目錄及子目錄中的檔案。

本文以admin使用者為例,下面出現的admin均指該使用者或者該使用者目錄。

安裝ssh和openssh-sftp-server

其實linux發行版基本都是安裝了openssh的,不過我們這裡還是確認一下是否安裝,

一般我們需要安裝openssh-server、openssh-sftp-server,所以我們檢查是否安裝了ssh。

ubuntu檢查是否安裝了openssh

dpkg --get-selections | grep openssh

1centos檢查是否安裝了openssh

# 以yum方式安裝的:

yum list installed openssh

# 以rpm包安裝的:

rpm -qa | grep openssh

# 以deb包安裝的:

dpkg -l | grep openssh12

3456

78如果已經三個包都安裝了,那麼你的命令列該是如下:

openssh-server installed

openssh-sftp-server installed

...123

哪個沒有列印就是沒有安裝,安裝即可。

ubuntu 安裝,依次執行以下命令,install後面只寫沒有安裝的包名即可

sudo apt-get update

sudo apt-get install openssh-client openssh-server openssh-sftp-server12

centos 安裝,install後面只寫沒有安裝的包名即可

sudo yum install openssh-client openssh-server openssh-sftp-server

1如果都是安裝的,我們需要保證openssh的版本不得低於4.8,因為我們要用chrootdirectory配置使用者訪問目錄,所以檢查下ssh的版本,執行命令ssh -v會列印出如下版本資訊:

openssh_6.6.1 ubuntu-2ubuntu2, openssl 1.0.1f...

1如果ssh的版本低於4.8,需要公升級。

ubuntu公升級ssh

sudo apt-get update

sudo apt-get install openssh-server12

centos公升級ssh

sudo yum update -y openssh-server

1建立使用者組和使用者

我們要建立乙個專門管理sftp使用者的使用者組,方便我們管理許可權。

1、建立乙個名為sftp-users的sftp使用者組

sudo groupadd sftp-users

12、在該組建立幾個需要登入sftp的使用者

新建使用者名為admin的使用者:

sudo useradd -g sftp-users -m admin

1修改admin的密碼:

passwd admin

1然後連續兩次輸入你要給該使用者設定的密碼即可。

3、如果該使用者已存在,但是不在sftp-users組中,可以移動使用者到改組

usermod –g sftp_users admin

1配置ssh和許可權

1、開啟/etc/ssh/sshd_config檔案

2、修改x11forwarding值為no

原來可能是:

x11forwarding yes

1現在修改為:

x11forwarding no

1如果x11forwarding不存在,就在檔案最後新增上面的**。

3、修改subsystem sftp為internal-sftp

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

# 或者

subsystem sftp /usr/lib/openssh/sftp-server12

3現在修改為:

subsystem sftp internal-sftp

14、在檔案末尾增加內容

match group sftp-users

allowtcpforwarding no

chrootdirectory %h

forcecommand internal-sftp12

34match group sftp-users這一行是指定以下的子行配置是匹配sftp-users使用者組的。

chrootdirectory %h該行指定match group行指定的使用者組驗證後用於chroot環境的路徑,也就是預設的使用者目錄,比如/home/admin。

forcecommand internal-sftp該行強制執行內部sftp,並忽略任何~/.ssh/rc檔案中的命令。

這裡要特別注意,因為chrootdirectory %h模式,所以我們等下要設定sftp-users中的所有使用者的使用者目錄許可權為root擁有,否則sftp-users組中的使用者無法用sftp登入。

修改sftp-users使用者組使用者目錄許可權

上面說了,因為使用了chrootdirectory %h,現在來修改許可權。

1、修改許可權為root使用者擁有

chown root /home/admin

12、修改許可權為root可讀寫執行,其它使用者可讀

chmod 755 /home/admin

13、重啟ssh,登入sftp

sudo service ssh restart

1現在就可以使用sftp登入了,但是我們發現,我們不能上傳檔案,那是因為登入後預設是使用者目錄,比如/home/admin,但是該目錄是root使用者擁有,因此我們還要修改許可權。

4、在使用者目錄下建立子目錄,讓sftp-users中的使用者可讀寫檔案

我們現在在/home/admin目錄下新建乙個upload資料夾:

cd /home/admin/

mkdir upload12

5、授權upload資料夾讀寫

讓子資料夾upload屬於admin

chown admin /home/admin/upload

1讓子資料夾upload被admin讀寫

chmod 755 /home/admin/upload

1重啟ssh,登入sftp

現在全部都配置完了,如果在上面第三步沒有重啟ssh的話,現在重啟後既可以登入使用了。

sudo service ssh restart

1centos7.x的系統如果執行上面這個命令提示不存在,執行:

Linux下 sftp服務配置

檢視openssh的版本,使用ssh v 命令來檢視openssh的版本,版本必須大於4.8p1,低於的這個版本需要公升級。groupadd sftp useradd g sftp s sbin nologin m yanqi passwd yanqi 注釋 給家目錄更改屬主並授權家目錄屬主必須是r...

linux配置sftp伺服器

新增使用者組 groupadd sftp 新增使用者並設定為sftp組 sudo useradd g sftp s sbin nologin m sftp 修改sftp使用者的密碼 sudo passwd sftp 建立sftp使用者的根目錄並設定擁有者和組,修改許可權 755 cd home su...

linux配置sftp伺服器

看了很多別人寫的部落格。自己實踐總結出一點經驗 作業系統linux centos 7 groupadd sftpsudo useradd g sftp s sbin nologin m sftpsftp 使用者 sudo passwd sftp會提示你輸入密碼 cd usr sudo mkdir s...