为了账号安全,请及时绑定邮箱和手机立即绑定

如何在不使用 shell 命令的情况下通过 SSH 以编程方式修改文件?

如何在不使用 shell 命令的情况下通过 SSH 以编程方式修改文件?

Go
慕的地6264312 2021-12-07 18:40:42
我正在编写一个工具,除其他外,它需要能够通过 SSH 连接修改文件。但是,出于安全考虑,我不想在远程服务器上调用 CLI 工具(TL;DR:字符串转义真的很难)。我如何使用 (a) ssh 命令行工具(在本地调用)或 (b)golang.org/x/crypto/ssh/*包来执行此操作?编辑:对不起,我忘了提及。我需要能够在一个会话中完成这一切。在某些客户端上,所连接的服务器位于负载平衡器之后,因此如果我进行多次调用,最终可能会连接到不同的服务器。
查看完整描述

3 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

与 ssh 建立主连接,保持活动状态。然后您可以将文件下载到您的本地主机,修改它并使用 scp 再次上传它,同时通过主连接进行隧道传输。

https://unix.stackexchange.com/a/2869


查看完整回答
反对 回复 2021-12-07
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

我不确定你打算怎么做。SSH 是一个非常严格的协议,它允许你做特定的事情:文件传输和终端连接。

您可以在此处查看不同 ssh 服务器具有的功能:https : //en.wikipedia.org/wiki/Comparison_of_SSH_servers#Features

但是 SSH 只是一个协议:一组 SSH 服务器(而不是 SSH 客户端,这将是您的 go 程序)会理解的命令。

如果您想执行特定操作,我建议您构建自己的服务器,使用 SSL 或 TLS 等加密技术保护该服务器,您的客户端将连接到该服务器。

PS:这个问题并不是真正与 Go 相关,而是更多与 SSH 相关,因为它对任何语言都一样。


查看完整回答
反对 回复 2021-12-07
?
达令说

TA贡献1821条经验 获得超6个赞

通过 SSH 操作文件的最便携方式是使用SFTP 协议。SFTP 主要用于传输文件,但它实际上是一种远程文件系统协议。它具有在远程系统上执行以下所有操作的操作:

  • 创建、删除和重命名文件

  • 打开文件进行读取或写入;读取和写入文件中的数据块。

  • 列出目录内容

  • 读取和更改文件属性

SFTP 公开了 POSIX(类 Unix)命名方案。文件分隔符是“/”,绝对路径以“/”开头。文件属性也遵循 POSIX 模型。


查看完整回答
反对 回复 2021-12-07
  • 3 回答
  • 0 关注
  • 137 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信