日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

一分钟在Linux 环境 搭建 SFTP服务器

發布時間:2024/9/27 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一分钟在Linux 环境 搭建 SFTP服务器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

          • 一、實戰
            • 1. 創建sftp組:
            • 2. 創建一個用戶sftpuser:
            • 3. 設置sftpuser用戶的密碼,會要求你輸入兩次密碼確認:
            • 4. 創建一個sftp的上傳目錄:
            • 5. 修改用戶sftpuser所在的目錄:
            • 6. 配置sshd_config:
            • 7. 設定Chroot目錄權限:
            • 8. 建立SFTP用戶登入后可寫入的目錄
            • 9. 重啟sshd服務:
            • 10. 測試是否能正常登陸:
            • 11. 關閉SElinux:
          • 二、常見問題
            • 2.1. 這里討論了為什么要關閉這功能
            • 2.2. 連接異常

(附解決Write failed: Broken pipe Couldn’t read packet: Connection reset by peer)…

一、實戰
1. 創建sftp組:
groupadd sftp
2. 創建一個用戶sftpuser:
useradd -g sftp -s /bin/false sftpuser

#參數說明:
/etc/group 文件包含所有組
/etc/shadow /etc/passwd 系統存在的所有用戶名

3. 設置sftpuser用戶的密碼,會要求你輸入兩次密碼確認:
passwd sftpuser
4. 創建一個sftp的上傳目錄:
mkdir /app/data
5. 修改用戶sftpuser所在的目錄:
usermod -d /app/data sftpuser
6. 配置sshd_config:
vim /etc/ssh/sshd_config

如果沒有vim,請執行

vi /etc/ssh/sshd_config

#找到如下這行,并注釋掉
#Subsystem sftp /usr/libexec/openssh/sftp-server
#添加如下幾行(如果添加之后出現問題,則添加到最后)

Subsystem sftp internal-sftp #這行指定使用sftp服務使用系統自帶的internal-sftp Match Group sftp #這行用來匹配用戶組 ChrootDirectory /app/data #用chroot將用戶的根目錄指定到/app/data ,這樣用戶就只能在/app/data 下活動 AllowTcpForwarding no ForceCommand internal-sftp #指定sftp命令

為什么用 internal-sftp 而不用默認的 sftp-server,這是因為:
這是一個進程內的 sftp 服務,當用戶 ChrootDirectory 的時候,將不請求任何文件;更好的性能,不用為 sftp 再開一個進程。
#保存退出

7. 設定Chroot目錄權限:
chown -R root:root /app/data chmod 755 /app/data
8. 建立SFTP用戶登入后可寫入的目錄
mkdir /app/data/sftpuser chown -R sftpuser:sftp /app/data/sftpuser/ chmod 755 /app/data/sftpuser/
9. 重啟sshd服務:
service sshd restart
10. 測試是否能正常登陸:
#執行這一行命令,輸入密碼即可 sftp sftpuser@localhost
11. 關閉SElinux:
vim /etc/sysconfig/selinux

#找到如下這行
SELINUX=enforcing
#修改為
SELINUX=disabled
#保存退出

二、常見問題
2.1. 這里討論了為什么要關閉這功能

https://www.zhihu.com/question/20559538

2.2. 連接異常
[root@localhost home]# sftp sftpuser@localhost Connecting to localhost... sftpuser@localhost's password: Write failed: Broken pipe Couldn't read packet: Connection reset by peer

這個問題,是由于用戶組決定的,解決很簡單
我的sftp前綴目錄是/app/data
首先,咱們找到/app目錄,查看他的權限,也就是用戶組和用戶

從上圖,可以看出用戶和戶組都是root權限對吧,不要問為都是root,一句話,不是root,不好使。

然后,找到/app下面的data目錄

從上圖,可以看出用戶和戶組都是root權限對吧,不要問為都是root,一句話,不是root,不好使。

上面是sftpuser的限制活動的目錄。

下面進入到,sftpuser登錄后的目錄看看權限是什么樣的呢?

從上圖,可以看出用用戶是sftpuser、用戶組是sftp權限對吧,不要問為這樣設置,一句話,不這樣設置,不好使。

完美解決!

這樣問題不好發現,

補充:

我當初是怎樣發現這個問題的呢? 搭建sftp服務器 只要不在/app目錄下面創建都好使,但是在/app目錄下面創建就是不好使,然后我就比對目錄權限之間的區別,發現/app的用戶是oracle 用戶組是oinstall,怎樣測試和配置都不好使。希望能夠幫助到小伙伴們!

總結

以上是生活随笔為你收集整理的一分钟在Linux 环境 搭建 SFTP服务器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。