首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以将scp命令的路径设置为OpenSSH sshd守护进程使用的路径吗?

可以将scp命令的路径设置为OpenSSH sshd守护进程使用的路径吗?
EN

Server Fault用户
提问于 2019-04-30 11:52:14
回答 1查看 1.7K关注 0票数 2

OpenSSH在SLES 12 SP4 Linux服务器上有一个奇怪的问题。

我们在服务器上安装了一个定制的OpenSSH,因此在每台机器上我们都有两个版本的OpenSSH,一个是操作系统的正式包,另一个是我们编译的版本。

对于SLES 12 SP4,如果我们从另一台服务器运行以下命令

scp -r directory/. destination_server:/path/to/directory

出现以下错误

scp: error: unexpected filename: .

我们已经证实,问题在于/usr/bin/scp下的scp二进制文件,它是由我们的OpenSSH运行的,而不是在它自己的路径下运行的scp。

经过搜索和测试,所采用的解决方案是删除/usr/bin/scp上的执行权限,因此我们版本的OpenSSH无法使用它,而来自客户端的scp -r工作得很好。

有没有更优雅的方式告诉守护进程在自己的路径下使用scp二进制文件而不是/usr/bin/scp?

诚挚的问候

EN

回答 1

Server Fault用户

发布于 2019-04-30 13:11:47

直接使用scp程序的不是SSH守护进程,所以不能将它重新配置为使用另一个二进制程序。您需要从系统中移除“正确”的scp二进制文件,或者重写PATH环境变量(最好是在系统默认配置文件中),因为从SSH守护进程的角度来看,scp只是运行远程命令的包装器。

基本上,以下是scp所做的工作:

  1. 通过ssh启动连接
  2. 通过通道发送scp -t (target path)命令,就像使用ssh user@target scp -t /this/file命令一样。
  3. 发送访问模式和文件长度,以'\n‘结尾。
  4. 通过SSH通道发送文件内容。

您可以使用以下命令来模拟scp:

代码语言:javascript
复制
ssh user@host scp -t /tmp/aFile.to.create
(enter your password)
C0664 41 originalFileName
The file should contain
these two lines.
(press enter twice)

第三行包含访问权限、文件大小和原始文件名。由于scp命令发送了“原样”,所以应该由目标系统为用户找到该程序。

票数 6
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/965259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档