"Error reading SSH protocol banner" 在 Python 中使用 Paramiko 连接到端口 443 时
"Error reading SSH protocol banner" when connecting to port 443 with Paramiko in Python
使用 WinSCP 和 Linux sftp
命令连接到服务器有效。但是 paramiko 无法连接。问题可能是横幅的格式很奇怪(横幅:)。有人可以帮助我如何使 paramiko 工作吗?
我尝试增加横幅超时(如代码中所示),但问题似乎与超时无关。错误立即出现并说 EOFError
和
SSHException: Error reading SSH protocol banner
我有以下代码(主机、用户名和密码被遗漏):
import logging
import paramiko
import socket
logging.basicConfig()
logging.getLogger("paramiko").setLevel(logging.DEBUG)
host = xxx
port = 443
username = xxx
password = xxx
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, port, username, password, banner_timeout=200)
调试输出:
DEBUG:paramiko.transport:starting thread (client mode): 0xfabf4150
DEBUG:paramiko.transport:Local version/idstring: SSH-2.0-paramiko_2.7.1
DEBUG:paramiko.transport:Banner:
ERROR:paramiko.transport:Exception: Error reading SSH protocol banner
ERROR:paramiko.transport:Traceback (most recent call last):
ERROR:paramiko.transport: File "/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/transport.py", line 2211, in _check_banner
ERROR:paramiko.transport: buf = self.packetizer.readline(timeout)
ERROR:paramiko.transport: File "/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/packet.py", line 380, in readline
ERROR:paramiko.transport: buf += self._read_timeout(timeout)
ERROR:paramiko.transport: File "/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/packet.py", line 609, in _read_timeout
ERROR:paramiko.transport: raise EOFError()
ERROR:paramiko.transport:EOFError
ERROR:paramiko.transport:
ERROR:paramiko.transport:During handling of the above exception, another exception occurred:
ERROR:paramiko.transport:
ERROR:paramiko.transport:Traceback (most recent call last):
ERROR:paramiko.transport: File "/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/transport.py", line 2039, in run
ERROR:paramiko.transport: self._check_banner()
ERROR:paramiko.transport: File "/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/transport.py", line 2216, in _check_banner
ERROR:paramiko.transport: "Error reading SSH protocol banner" + str(e)
ERROR:paramiko.transport:paramiko.ssh_exception.SSHException: Error reading SSH protocol banner
ERROR:paramiko.transport:
错误:
---------------------------------------------------------------------------
EOFError Traceback (most recent call last)
/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/transport.py in _check_banner(self)
2210 try:
-> 2211 buf = self.packetizer.readline(timeout)
2212 except ProxyCommandFailure:
/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/packet.py in readline(self, timeout)
379 while linefeed_byte not in buf:
--> 380 buf += self._read_timeout(timeout)
381 n = buf.index(linefeed_byte)
/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/packet.py in _read_timeout(self, timeout)
608 if len(x) == 0:
--> 609 raise EOFError()
610 break
EOFError:
During handling of the above exception, another exception occurred:
SSHException Traceback (most recent call last)
<command-587691805458922> in <module>
7 ssh=paramiko.SSHClient()
8 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
----> 9 ssh.connect(host, port, username, password, banner_timeout=200)
/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/client.py in connect(self, hostname, port, username, password, pkey, key_filename, timeout, allow_agent, look_for_keys, compress, sock, gss_auth, gss_kex, gss_deleg_creds, gss_host, banner_timeout, auth_timeout, gss_trust_dns, passphrase, disabled_algorithms)
404 sec_opts.key_types = [keytype] + other_types
405
--> 406 t.start_client(timeout=timeout)
407
408 # If GSS-API Key Exchange is performed we are not required to check the
/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/transport.py in start_client(self, event, timeout)
658 e = self.get_exception()
659 if e is not None:
--> 660 raise e
661 raise SSHException("Negotiation failed.")
662 if event.is_set() or (
/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/transport.py in run(self)
2037 "Local version/idstring: {}".format(self.local_version),
2038 ) # noqa
-> 2039 self._check_banner()
2040 # The above is actually very much part of the handshake, but
2041 # sometimes the banner can be read but the machine is not
/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/transport.py in _check_banner(self)
2214 except Exception as e:
2215 raise SSHException(
-> 2216 "Error reading SSH protocol banner" + str(e)
2217 )
2218 if buf[:4] == "SSH-":
SSHException: Error reading SSH protocol banner
WinSCP 日志:
. 2020-11-25 10:40:22.195 sess: Destroying session.
. 2020-11-25 10:40:22.195 sess: Closing connection.
. 2020-11-25 10:40:22.195 sess: Connection closed.
. 2020-11-25 10:40:24.043 --------------------------------------------------------------------------
. 2020-11-25 10:40:24.043 WinSCP Version 5.17.7 (Build 10640) (OS 10.0.18363 - Windows 10 Enterprise)
. 2020-11-25 10:40:24.043 Configuration: HKCU\Software\Martin Prikryl\WinSCP 2\
. 2020-11-25 10:40:24.044 Log level: Normal
. 2020-11-25 10:40:24.044 Local account: DESKTOP-xxxx\xxx
. 2020-11-25 10:40:24.044 Working directory: C:\Program Files (x86)\WinSCP
. 2020-11-25 10:40:24.044 Process ID: 27336
. 2020-11-25 10:40:24.044 Command-line: "C:\Program Files (x86)\WinSCP\WinSCP.exe"
. 2020-11-25 10:40:24.045 Time zone: Current: GMT+1, Standard: GMT+1 (W. Europe Standard Time), DST: GMT+2 (W. Europe Daylight Time), DST Start: 2020-03-29, DST End: 2020-10-25
. 2020-11-25 10:40:24.045 Login time: Wednesday, 25 November 2020 10:40:24
. 2020-11-25 10:40:24.045 --------------------------------------------------------------------------
. 2020-11-25 10:40:24.045 Session name: xxxx@xxxx.com (Site)
. 2020-11-25 10:40:24.045 Host name: xxxx.com (Port: 443)
. 2020-11-25 10:40:24.045 User name: xxxx (Password: Yes, Key file: No, Passphrase: No)
. 2020-11-25 10:40:24.045 Transfer Protocol: WebDAV
. 2020-11-25 10:40:24.045 Proxy: None
. 2020-11-25 10:40:24.046 HTTPS: Yes [Client certificate: No]
. 2020-11-25 10:40:24.046 TLS/SSL versions: TLSv1.0-TLSv1.2
. 2020-11-25 10:40:24.046 Local directory: default, Remote directory: /xxxx, Update: Yes, Cache: Yes
. 2020-11-25 10:40:24.046 Cache directory changes: Yes, Permanent: Yes
. 2020-11-25 10:40:24.046 Recycle bin: Delete to: No, Overwritten to: No, Bin path:
. 2020-11-25 10:40:24.046 DST mode: Unix
. 2020-11-25 10:40:24.046 Compression: No
. 2020-11-25 10:40:24.046 --------------------------------------------------------------------------
. 2020-11-25 10:40:24.071 HTTP session to https://xxxxxxx.com:443 begins.
. 2020-11-25 10:40:24.072 ssl: SNI enabled by default.
. 2020-11-25 10:40:24.072 ah_create, for WWW-Authenticate
. 2020-11-25 10:40:24.072 Sending request headers:
. 2020-11-25 10:40:24.072 OPTIONS /xxxx HTTP/1.1
. 2020-11-25 10:40:24.072 User-Agent: WinSCP/5.17.7 neon/0.31.1
. 2020-11-25 10:40:24.072 Keep-Alive:
. 2020-11-25 10:40:24.072 Connection: TE, Keep-Alive
. 2020-11-25 10:40:24.072 TE: trailers
. 2020-11-25 10:40:24.072 Host: xxxxxx.com
. 2020-11-25 10:40:24.072 Sending request-line and headers:
. 2020-11-25 10:40:24.072 Doing DNS lookup on xxxx.com...
. 2020-11-25 10:40:24.074 req: Connecting to xxxxx:443
. 2020-11-25 10:40:24.091 Doing SSL negotiation.
. 2020-11-25 10:40:24.198 Identity match for 'xxxx.com': good
. 2020-11-25 10:40:24.198 Verifying certificate for "xxx" with fingerprint xx:xx:xxxx and 08 failures
. 2020-11-25 10:40:24.215 Certificate verified against Windows certificate store
. 2020-11-25 10:40:24.215 Using TLSv1.2, cipher TLSv1.2: AES256-GCM-SHA384, 2048 bit RSA
. 2020-11-25 10:40:24.215 Request sent; retry is 0.
. 2020-11-25 10:40:24.237 [status-line] < HTTP/1.1 200 OK
. 2020-11-25 10:40:24.237 Header Name: [pragma], Value: [no-cache]
. 2020-11-25 10:40:24.237 Header Name: [x-responding-server], Value: [sslngn018]
. 2020-11-25 10:40:24.237 Header Name: [x-dmuser], Value: [username]
. 2020-11-25 10:40:24.237 Header Name: [ms-author-via], Value: [DAV]
. 2020-11-25 10:40:24.237 Header Name: [allow], Value: [GET, HEAD, OPTIONS, PUT, POST, COPY, PROPFIND, DELETE, LOCK, MKCOL, MOVE, PROPPATCH, UNLOCK, ACL, TRACE]
. 2020-11-25 10:40:24.237 Header Name: [dav], Value: [1,2, access-control, <http://apache.org/dav/propset/fs/1>]
. 2020-11-25 10:40:24.237 Header Name: [content-type], Value: [text/plain]
. 2020-11-25 10:40:24.237 Header Name: [date], Value: [Wed, 25 Nov 2020 09:40:24 GMT]
. 2020-11-25 10:40:24.237 Header Name: [server], Value: [CrushFTP HTTP Server]
. 2020-11-25 10:40:24.237 Header Name: [p3p], Value: [policyref="/WebInterface/w3c/p3p.xml", CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"]
. 2020-11-25 10:40:24.237 Header Name: [x-frame-options], Value: [SAMEORIGIN]
. 2020-11-25 10:40:24.237 Header Name: [connection], Value: [close]
. 2020-11-25 10:40:24.237 Header Name: [content-length], Value: [0]
. 2020-11-25 10:40:24.237 End of headers.
. 2020-11-25 10:40:24.278 ah_post_send (#0), code is 200 (want 401), WWW-Authenticate is (none)
. 2020-11-25 10:40:24.278 sess: Closing connection.
. 2020-11-25 10:40:24.278 sess: Connection closed.
. 2020-11-25 10:40:24.278 Request ends, status 200 class 2xx, error line:
. 2020-11-25 10:40:24.278 200 OK
. 2020-11-25 10:40:24.278 Request ends.
. 2020-11-25 10:40:24.278 Server capabilities: 1, 2, <http://apache.org/dav/propset/fs/1>, access-control
. 2020-11-25 10:40:24.278 --------------------------------------------------------------------------
. 2020-11-25 10:40:24.278 Using WebDAV protocol.
. 2020-11-25 10:40:24.278 Doing startup conversation with host.
. 2020-11-25 10:40:24.291 Changing directory to xxxxx
您正在将 WebDAV 与 WinSCP 结合使用。
这与 SFTP、Paramiko 或任何横幅中的任何符号无关。
如果您的服务器仅支持 WebDAV,则您必须在 Python 代码中使用 WebDAV 库或客户端。
尽管您声称 sftp
有效,但您的服务器似乎也支持 SFTP。所以只需连接到标准 SSH/SFTP 端口 22.
使用 WinSCP 和 Linux sftp
命令连接到服务器有效。但是 paramiko 无法连接。问题可能是横幅的格式很奇怪(横幅:)。有人可以帮助我如何使 paramiko 工作吗?
我尝试增加横幅超时(如代码中所示),但问题似乎与超时无关。错误立即出现并说 EOFError
和
SSHException: Error reading SSH protocol banner
我有以下代码(主机、用户名和密码被遗漏):
import logging
import paramiko
import socket
logging.basicConfig()
logging.getLogger("paramiko").setLevel(logging.DEBUG)
host = xxx
port = 443
username = xxx
password = xxx
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, port, username, password, banner_timeout=200)
调试输出:
DEBUG:paramiko.transport:starting thread (client mode): 0xfabf4150
DEBUG:paramiko.transport:Local version/idstring: SSH-2.0-paramiko_2.7.1
DEBUG:paramiko.transport:Banner:
ERROR:paramiko.transport:Exception: Error reading SSH protocol banner
ERROR:paramiko.transport:Traceback (most recent call last):
ERROR:paramiko.transport: File "/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/transport.py", line 2211, in _check_banner
ERROR:paramiko.transport: buf = self.packetizer.readline(timeout)
ERROR:paramiko.transport: File "/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/packet.py", line 380, in readline
ERROR:paramiko.transport: buf += self._read_timeout(timeout)
ERROR:paramiko.transport: File "/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/packet.py", line 609, in _read_timeout
ERROR:paramiko.transport: raise EOFError()
ERROR:paramiko.transport:EOFError
ERROR:paramiko.transport:
ERROR:paramiko.transport:During handling of the above exception, another exception occurred:
ERROR:paramiko.transport:
ERROR:paramiko.transport:Traceback (most recent call last):
ERROR:paramiko.transport: File "/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/transport.py", line 2039, in run
ERROR:paramiko.transport: self._check_banner()
ERROR:paramiko.transport: File "/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/transport.py", line 2216, in _check_banner
ERROR:paramiko.transport: "Error reading SSH protocol banner" + str(e)
ERROR:paramiko.transport:paramiko.ssh_exception.SSHException: Error reading SSH protocol banner
ERROR:paramiko.transport:
错误:
---------------------------------------------------------------------------
EOFError Traceback (most recent call last)
/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/transport.py in _check_banner(self)
2210 try:
-> 2211 buf = self.packetizer.readline(timeout)
2212 except ProxyCommandFailure:
/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/packet.py in readline(self, timeout)
379 while linefeed_byte not in buf:
--> 380 buf += self._read_timeout(timeout)
381 n = buf.index(linefeed_byte)
/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/packet.py in _read_timeout(self, timeout)
608 if len(x) == 0:
--> 609 raise EOFError()
610 break
EOFError:
During handling of the above exception, another exception occurred:
SSHException Traceback (most recent call last)
<command-587691805458922> in <module>
7 ssh=paramiko.SSHClient()
8 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
----> 9 ssh.connect(host, port, username, password, banner_timeout=200)
/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/client.py in connect(self, hostname, port, username, password, pkey, key_filename, timeout, allow_agent, look_for_keys, compress, sock, gss_auth, gss_kex, gss_deleg_creds, gss_host, banner_timeout, auth_timeout, gss_trust_dns, passphrase, disabled_algorithms)
404 sec_opts.key_types = [keytype] + other_types
405
--> 406 t.start_client(timeout=timeout)
407
408 # If GSS-API Key Exchange is performed we are not required to check the
/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/transport.py in start_client(self, event, timeout)
658 e = self.get_exception()
659 if e is not None:
--> 660 raise e
661 raise SSHException("Negotiation failed.")
662 if event.is_set() or (
/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/transport.py in run(self)
2037 "Local version/idstring: {}".format(self.local_version),
2038 ) # noqa
-> 2039 self._check_banner()
2040 # The above is actually very much part of the handshake, but
2041 # sometimes the banner can be read but the machine is not
/local_disk0/.ephemeral_nfs/envs/pythonEnv-db54fca7-6304-4f77-98df-05eee0abdd0c/lib/python3.7/site-packages/paramiko/transport.py in _check_banner(self)
2214 except Exception as e:
2215 raise SSHException(
-> 2216 "Error reading SSH protocol banner" + str(e)
2217 )
2218 if buf[:4] == "SSH-":
SSHException: Error reading SSH protocol banner
WinSCP 日志:
. 2020-11-25 10:40:22.195 sess: Destroying session.
. 2020-11-25 10:40:22.195 sess: Closing connection.
. 2020-11-25 10:40:22.195 sess: Connection closed.
. 2020-11-25 10:40:24.043 --------------------------------------------------------------------------
. 2020-11-25 10:40:24.043 WinSCP Version 5.17.7 (Build 10640) (OS 10.0.18363 - Windows 10 Enterprise)
. 2020-11-25 10:40:24.043 Configuration: HKCU\Software\Martin Prikryl\WinSCP 2\
. 2020-11-25 10:40:24.044 Log level: Normal
. 2020-11-25 10:40:24.044 Local account: DESKTOP-xxxx\xxx
. 2020-11-25 10:40:24.044 Working directory: C:\Program Files (x86)\WinSCP
. 2020-11-25 10:40:24.044 Process ID: 27336
. 2020-11-25 10:40:24.044 Command-line: "C:\Program Files (x86)\WinSCP\WinSCP.exe"
. 2020-11-25 10:40:24.045 Time zone: Current: GMT+1, Standard: GMT+1 (W. Europe Standard Time), DST: GMT+2 (W. Europe Daylight Time), DST Start: 2020-03-29, DST End: 2020-10-25
. 2020-11-25 10:40:24.045 Login time: Wednesday, 25 November 2020 10:40:24
. 2020-11-25 10:40:24.045 --------------------------------------------------------------------------
. 2020-11-25 10:40:24.045 Session name: xxxx@xxxx.com (Site)
. 2020-11-25 10:40:24.045 Host name: xxxx.com (Port: 443)
. 2020-11-25 10:40:24.045 User name: xxxx (Password: Yes, Key file: No, Passphrase: No)
. 2020-11-25 10:40:24.045 Transfer Protocol: WebDAV
. 2020-11-25 10:40:24.045 Proxy: None
. 2020-11-25 10:40:24.046 HTTPS: Yes [Client certificate: No]
. 2020-11-25 10:40:24.046 TLS/SSL versions: TLSv1.0-TLSv1.2
. 2020-11-25 10:40:24.046 Local directory: default, Remote directory: /xxxx, Update: Yes, Cache: Yes
. 2020-11-25 10:40:24.046 Cache directory changes: Yes, Permanent: Yes
. 2020-11-25 10:40:24.046 Recycle bin: Delete to: No, Overwritten to: No, Bin path:
. 2020-11-25 10:40:24.046 DST mode: Unix
. 2020-11-25 10:40:24.046 Compression: No
. 2020-11-25 10:40:24.046 --------------------------------------------------------------------------
. 2020-11-25 10:40:24.071 HTTP session to https://xxxxxxx.com:443 begins.
. 2020-11-25 10:40:24.072 ssl: SNI enabled by default.
. 2020-11-25 10:40:24.072 ah_create, for WWW-Authenticate
. 2020-11-25 10:40:24.072 Sending request headers:
. 2020-11-25 10:40:24.072 OPTIONS /xxxx HTTP/1.1
. 2020-11-25 10:40:24.072 User-Agent: WinSCP/5.17.7 neon/0.31.1
. 2020-11-25 10:40:24.072 Keep-Alive:
. 2020-11-25 10:40:24.072 Connection: TE, Keep-Alive
. 2020-11-25 10:40:24.072 TE: trailers
. 2020-11-25 10:40:24.072 Host: xxxxxx.com
. 2020-11-25 10:40:24.072 Sending request-line and headers:
. 2020-11-25 10:40:24.072 Doing DNS lookup on xxxx.com...
. 2020-11-25 10:40:24.074 req: Connecting to xxxxx:443
. 2020-11-25 10:40:24.091 Doing SSL negotiation.
. 2020-11-25 10:40:24.198 Identity match for 'xxxx.com': good
. 2020-11-25 10:40:24.198 Verifying certificate for "xxx" with fingerprint xx:xx:xxxx and 08 failures
. 2020-11-25 10:40:24.215 Certificate verified against Windows certificate store
. 2020-11-25 10:40:24.215 Using TLSv1.2, cipher TLSv1.2: AES256-GCM-SHA384, 2048 bit RSA
. 2020-11-25 10:40:24.215 Request sent; retry is 0.
. 2020-11-25 10:40:24.237 [status-line] < HTTP/1.1 200 OK
. 2020-11-25 10:40:24.237 Header Name: [pragma], Value: [no-cache]
. 2020-11-25 10:40:24.237 Header Name: [x-responding-server], Value: [sslngn018]
. 2020-11-25 10:40:24.237 Header Name: [x-dmuser], Value: [username]
. 2020-11-25 10:40:24.237 Header Name: [ms-author-via], Value: [DAV]
. 2020-11-25 10:40:24.237 Header Name: [allow], Value: [GET, HEAD, OPTIONS, PUT, POST, COPY, PROPFIND, DELETE, LOCK, MKCOL, MOVE, PROPPATCH, UNLOCK, ACL, TRACE]
. 2020-11-25 10:40:24.237 Header Name: [dav], Value: [1,2, access-control, <http://apache.org/dav/propset/fs/1>]
. 2020-11-25 10:40:24.237 Header Name: [content-type], Value: [text/plain]
. 2020-11-25 10:40:24.237 Header Name: [date], Value: [Wed, 25 Nov 2020 09:40:24 GMT]
. 2020-11-25 10:40:24.237 Header Name: [server], Value: [CrushFTP HTTP Server]
. 2020-11-25 10:40:24.237 Header Name: [p3p], Value: [policyref="/WebInterface/w3c/p3p.xml", CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"]
. 2020-11-25 10:40:24.237 Header Name: [x-frame-options], Value: [SAMEORIGIN]
. 2020-11-25 10:40:24.237 Header Name: [connection], Value: [close]
. 2020-11-25 10:40:24.237 Header Name: [content-length], Value: [0]
. 2020-11-25 10:40:24.237 End of headers.
. 2020-11-25 10:40:24.278 ah_post_send (#0), code is 200 (want 401), WWW-Authenticate is (none)
. 2020-11-25 10:40:24.278 sess: Closing connection.
. 2020-11-25 10:40:24.278 sess: Connection closed.
. 2020-11-25 10:40:24.278 Request ends, status 200 class 2xx, error line:
. 2020-11-25 10:40:24.278 200 OK
. 2020-11-25 10:40:24.278 Request ends.
. 2020-11-25 10:40:24.278 Server capabilities: 1, 2, <http://apache.org/dav/propset/fs/1>, access-control
. 2020-11-25 10:40:24.278 --------------------------------------------------------------------------
. 2020-11-25 10:40:24.278 Using WebDAV protocol.
. 2020-11-25 10:40:24.278 Doing startup conversation with host.
. 2020-11-25 10:40:24.291 Changing directory to xxxxx
您正在将 WebDAV 与 WinSCP 结合使用。
这与 SFTP、Paramiko 或任何横幅中的任何符号无关。
如果您的服务器仅支持 WebDAV,则您必须在 Python 代码中使用 WebDAV 库或客户端。
尽管您声称 sftp
有效,但您的服务器似乎也支持 SFTP。所以只需连接到标准 SSH/SFTP 端口 22.