更改 Linux 中的默认 SCP 命令标志

更改 Linux 中的默认 SCP 命令标志

我正在尝试使用一个非常基本的命令将文件从本地系统上的虚拟机(Ubuntu 18.04)移动到远程服务器scp。此问题仅出现在一台特定服务器上,其他服务器运行正常,因此这不是普遍现象。

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/

答案1

IT 团队建议我不要使用这些标志-d-t因为在发出命令时,这些标志会显示在调试日志中,并且不受远程服务器支持。这些可以删除吗?我没有使用命令明确发出它们。

-t- 这完全是胡说八道。如果没有该-t标志,SCP 协议就无法工作。请参阅SCP(安全复制协议)文件传输如何工作?

-d- 当您指定多个源时使用它。它向服务器指示“目标应该是目录”。

在这两种情况下,我都怀疑服务器不支持其中任何一个。由于它是 Ubuntu,因此它 99.9% 肯定正在运行 OpenSSH。而且 OpenSSH 自存在以来就支持这些标志。请参阅scp.c自 1999 年起


我很确定你得到的建议是一派胡言。“IT 团队”可能只是没有在scp手册页中找到这些开关,并找到了一种真正帮助您的简单方法。但这些标志是用于scp作为“客户端”和scp“服务器”进行通信的内部标志。它们没有按目的记录下来。

此外,FileZilla 甚至不支持 SCP 协议。 唯一导致上述问题的是 - 您的问题与任何scp旗帜”

答案2

原来是防火墙阻止了传输。原因是我的默认 shell 上的文件权限.*rc文件。.cshrc在这种情况下。

我的默认 shell 是 csh,文件权限是

-rwxr-s---

将这些更改为

-rw-r-----

解决了这个问题。

感谢大家的帮助。

相关内容