1. 受權網站開發人員使用 sftp 上傳項目文件 2. 必須使用密鑰方式,去掉密碼驗證方式 3. 簡單起見,所有放在 /var/www 目錄下 4. 熟練以後,能夠在繼續修改 sshd 配置文件指定到具體的子目錄下 5. 咱們的人員很少,採用對每個帳號分別設置的方法 6. 是否使用組策略方式更方便,目前不熟練!之後再處理
1. 建立 sftp 帳戶 (假設名字:sftp123) 2. 複製管理員的 .ssh 目錄到這個 sftp 帳戶的 home 下(/home/sftp123) 3. 修改 /home/sftp123/.ssh 目錄的全部者爲 sftp123 4. 修改 authorized_keys 文件,只保留管理員和 sftp123 的 publickey 5. 修改 sshd 配置,限制 sftp123 的目錄和命令權限 ** 如下必須有root權限的管理員帳號來操做,假設 dhbm
sudo adduser sftp123 禁止 sftp 帳戶 shell 登陸 sudo usermod -s /usr/sbin/nologin sftp123
直接從管理員 cp sudo cp -R /home/dhbm/.ssh /home/sftp123 改變 .ssh 目錄的擁有者 sudo chown -R sftp123:sftp123 /home/sftp123/.ssh 改變 .ssh 目錄屬性 sudo chmod -R 755 /home/sftp123/.ssh 只保留管理員和 sftp123 的 publickey cd /home/sftp123/.ssh ls authorized_keys id_rsa id_rsa.pub sudo vim authorized_keys sudo systemctl restart sshd ** 若是隻操做到這裏,sftp123 是能夠ssh 登陸到服務器的
sudo vim /etc/ssh/sshd_config 文件最後已經有一個 Example of overriding settings,在最後追加 # add by wzh 20190122 only SFTP users # only in /var/www # 告訴SSH服務器僅將如下命令應用於指定的用戶 Match User sftp123 # 強制SSH服務器在登陸時運行SFTP服務器,禁止shell訪問 ForceCommand internal-sftp # 容許此用戶進行密碼驗證 PasswordAuthentication no # 只容許訪問這個目錄 ChrootDirectory /var/www # 不容許端口轉發 PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no 保存退出後 sudo systemctl restart sshd
1. ssh sftp123@192.168.1.192 返回結果: sftp123@192.168.1.192's password: This service allows sftp connections only. Connection to 192.168.1.192 closed. 2. sftp sftp123@192.168.1.192 返回結果 Connected to sftp123@192.168.1.192. sftp> 3. FileZilla 創建一個站點,以下圖
鏈接成功 html
發現問題: 測試發現,sftp123,sftp456 在本地是能夠登陸的,說明沒有徹底限制到 Shell 繼續學習,找找怎麼回事?
如下兩種方式均可以去掉用戶的 shell 權限 sudo usermod -s /bin/false sftp456 sudo usermod -s /usr/sbin/nologin sftp123 登陸時,返回一個錯誤狀態,而後當即退出 ** 在 useradd 的時候直接加上 shell 限制,就不會有這個問題了! sudo adduser sftp789 --shell /bin/false 繼續複習一次 sftp789
sftp sftp123@192.168.1.161 返回錯誤: packet_write_wait: Connection to 192.168.1.161 port 22: Broken pipe Connection closed 以上操做先在 ubuntu 18.04 下操做的,沒有發現問題 可是回到 ubuntu 16.04 Server ,出現以上錯誤! 1. 按照網上的建議,/var/www 目錄擁有者都是 root ,可是 SFTP 上傳一個文件以後,文件固然屬於 sftp456 了! sudo chown -R root:root /var/www sudo chmod 755 /var/www *** 刪除了剛剛上傳的文件!仍是同樣的問題啊! 2. 按照以上操做設置,一條一條的加上去,最後 PasswordAuthentication 這一條加上就出錯! 再刪除這一條,也不行! # add by wzh 20190122 only SFTP users # only in /var/www Match User sftp123 ForceCommand internal-sftp ChrootDirectory /var/www PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no PasswordAuthentication no 3. 只能刪除掉 Match User 這一段以後,從新來過! 再加上的時候,不要 PasswordAuthentication no z h這一行! 從新來過!發現問題還在 /var/www 這個目錄的擁有者問題 sudo rm -rf /var/www sudo mkdir /var/www 以後,sftp 馬上就正常了! 那麼上傳文件以後,怎麼辦? 四、使用 adduser 加上的帳號,會自動創建 /home/XXXX ,可是該目錄屬於XXX:XXX 將它改爲 root:root 五、通過屢次嘗試,最終問題仍是在 ChrootDirectory 目錄的權限上
sudo adduser sftp193 sudo cp -R /home/dhbm/.ssh /home/sftp193 sudo chown -R sftp193:sftp193 /home/sftp193/.ssh sudo chown -R root:root /home/sftp193 sudo chown -R sftp193:sftp193 /home/sftp193/.ssh sudo chmod -R 755 /home/sftp193/.ssh sudo chmod -R 755 /var/www/ 測試SSH: ssh -p 3193 sftp193@192.168.1.193 返回錯誤 This service allows sftp connections only. Connection to 192.168.1.193 closed. 測試SFTP: sftp -P 22 sftp193@192.168.1.193 在 /var/www/ 創建幾個測試目錄 sudo chmod -R 777 /var/www/test sudo chmod -R 777 /var/www/test.XXXX.cn sudo chmod -R 777 /var/www/html ** 原本還作了按照組和成員分別控制的操做,直接貼出來我參考的博文 ** 我是徹底照着該篇文章走了一遍以後,才獲得最終的解決辦法的!謝謝這位朋友! ** 不過,文章中不少命令都沒有空格分開!
https://blog.csdn.net/gong_xucheng/article/details/39319941shell