1. 程式人生 > 實用技巧 >記一次sftp連接出現Connection to **** port ****: Broken pipe的錯誤總結

記一次sftp連接出現Connection to **** port ****: Broken pipe的錯誤總結

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