最近一個項目須要使用 sftp 上傳文件,在網上找了段代碼,開發和測試都沒有問題,上線以後問題來了:ssh
不能上傳文件了,可是建立目錄能夠成功,非常費解;函數
因而嘗試 ssh2_exec() 用命令上傳,收到錯誤提示:This service allows sftp connections only.測試
因而恍然大悟,由於前面上傳使用的是 ssh2_scp_send()函數 這個函數至關因而用 scp 命令上傳文件,因此上傳不成功,而建立目錄是 ssh2_sftp_mkdir() 因此建立目錄沒有問題;開發
因而只能改用 fopen 上傳了;io
至於出現「This service allows sftp connections only.」的緣由應該是,登錄
服務端/etc/sshd_config文件的設置問題:ftp
AllowTcpForwarding 應該設置爲yes纔可。service
若是沒有設置爲yes的話,用戶就只能經過sftp訪問指定目錄,並且不能進行ssh登陸.項目
只有把 AllowTcpForwarding no 改成 AllowTcpForwarding yes ,用戶才能經過ssh登陸而後訪問目錄。di