為什麼 SFTP 不起作用(SSH 能發揮作用)?

為什麼 SFTP 不起作用(SSH 能發揮作用)?

我有一個帶有 Ubuntu Server 16.04 + VestaCP 的專用伺服器。 SSH 存取運作正常,但 SFTP 發生故障。我不知道它什麼時候壞掉的,但在此之前一切都按預期進行。

當我從本機連接到 sftp 時,它可以工作:

Mar  6 13:52:37 local sftp-server[2120]: session opened for local user user1 from [10.10.80.120]
Mar  6 13:52:37 local sftp-server[2120]: received client version 3
Mar  6 13:52:37 local sftp-server[2120]: debug3: request 1: realpath
Mar  6 13:52:37 local sftp-server[2120]: realpath "."
Mar  6 13:52:37 local sftp-server[2120]: debug1: request 1: sent names count 1

當我嘗試從遠端主機執行此操作時,我得到 1 行:

Mar  6 19:34:06 server sftp-server[3545]: session opened for local user root from [xxx.xxx.xxx.xxx]

沒有任何反應並且連接因逾時而中斷。我沒有收到任何錯誤,也無法確定此問題的原因。

我在 /etc/ssh/sshd_config 中有預設設定:

Subsystem sftp /usr/lib/openssh/sftp-server -l debug3

我不想將其替換為內部 sftp。這應該無需更改即可工作,因為它以前有效。

答案1

當SFTP客戶端連接SFTP伺服器時,第一次資料交換發生的事情是客戶端將其 SFTP 協定版本傳送到伺服器。伺服器使用它願意用於會話的 SFTP 協定版本進行回應,然後客戶端和伺服器從那裡繼續。

您可以在第一個日誌範例中看到客戶端將其版本傳送到伺服器:

3 月 6 日 13:52:37 本機 sftp-server[2120]:收到客戶端版本 3

第二個日誌樣本中缺少該行。最簡單的解釋是客戶端從未發送過它。

簡而言之,第二種情況中使用的 SFTP 用戶端似乎出現故障。它沒有發送應該發送來啟動 SFTP 交換的訊息。

相關內容