我正在尝试使用非常基本的scp
命令将文件从本地系统上的虚拟机(Ubuntu 18.04)移动到远程服务器。这个问题只出现在一个特定的服务器上,其他的工作正常,所以它不是一个通用的东西。
scp <file name> <user>@<complete_hostname>:~/
但是此命令不会继续进行成功的身份验证。
当我使用 FileZilla 时也会发生同样的情况。
IT 团队建议我使用运行良好的“WinSCP”。
scp 调试日志
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Trying private key: /home/username/.ssh/id_dsa
debug1: Trying private key: /home/username/.ssh/id_ecdsa
debug1: Next authentication method: password
'user'@'full hostname's password:
debug1: Authentication succeeded (password).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = C
debug1: Sending env LC_ALL = C
debug1: Sending command: scp -v -t ~/
此后没有任何进展,FileZilla 以类似方式在 20 秒后超时。而 WinSCP 工作正常。
什么可能导致scp
挂起,因为我在我的一些脚本中使用它,一个特定服务器的这个问题使我的脚本在它们上无法使用,这也适用于 SFTP 方法。
IT 团队建议我不要使用这些标志-d
,并且-t
在发出命令时,调试日志中会显示相同的命令,并且不受远程服务器的支持。这些可以去掉吗?我没有明确地向他们发出命令。
编辑2:
SCP Log: (from local machine, Ubuntu 18.04)
==========
debug1: Next authentication method: publickey
debug1: Offering public key:
RSA SHA256:<key> /home/username/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Authentication succeeded (publickey).
Authenticated to 'HOSTNAME' ([10.6.26.145]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: pledge: network
debug1: Sending environment.
debug1: Sending env LANG = en_IN
debug1: Sending command: scp -v -r -d -t ~/received/
-t
- 这完全是胡说八道。SCP 协议不能在没有-t
标志的情况下工作。请参阅SCP(安全复制协议)文件传输如何工作?-d
- 当您指定多个来源时使用它。它向服务器指示“目标应该是目录”。在这两种情况下,我都怀疑服务器不支持其中任何一种。由于它是 Ubuntu,它以 99.9% 的确定性运行 OpenSSH。OpenSSH 自从存在以来就支持这些标志。见
scp.c
1999 年。我很确定你得到的建议只是一派胡言。“ IT 团队”可能只是没有在
scp
手册页中找到这些开关,并且找到了真正帮助您的简单方法。scp
但是这些标志是用于在“客户端”和scp
“服务器”之间进行通信的内部标志。它们没有按目的记录。FileZilla 甚至不支持 SCP 协议。仅对上述有贡献-您的问题与任何“
scp
标志”无关。事实证明,这是一个阻止传输的防火墙。原因是我的默认 shell 的.*rc文件的文件权限。.cshrc在这种情况下。
我的默认 shell 是 csh,文件权限是
将这些更改为
解决了这个问题。
谢谢大家的帮助。