1. 首先看一下詳細的錯誤信息
下面就貼出同事博客園老哥的一段錯誤解析
https://www.cnblogs.com/whatmiss/p/7068772.html
> Write failed: Broken pipe > Couldn't read packet: Connection reset by peer
這個問題的原因是ChrootDirectory的權限問題,你設定的目錄必須是root用戶所有,否則就會出現問題。所以請確保sftp用戶根目錄的所有人是root, 權限是 750 或者 755。注意以下兩點原則:
-
目錄開始一直往上到系統根目錄為止的目錄擁有者都只能是 root,用戶組可以不是 root。
-
目錄開始一直往上到系統根目錄為止都不可以具有群組寫入權限
- 上面2點一定注意,仔細檢查。我就是因為這個問題,導致一直有這個問題。仔細檢查配置后,解決問題。
當時初看到解析的時候因為不太清楚linux中的用戶組和用戶名到底是什么,也配置過目錄的權限,所以當時我認為是第二種原因。其實不然
2. 問題分析解決
我找了好多的網站解決這個問題,大部分都是驢唇不對馬嘴。
其實就是用戶組的問題,也就是第一種,配置sftp的配置文件中有一個chrootDirectory的項,這里填寫的路勁一定是要在root用戶名下的路徑
當你發現你的共享目錄的父級目錄和自己的子目錄用戶名和權限不一致的時候,一定要去更改。
舉個例子更改用戶組和用戶名的例子 比如這里我要把share文件夾改成sftp用戶組下的root用戶,我就要這樣執行
chown -R root.root share