有没有结合SSH和SFTP的客户端?

Jak*_*ake -3 ubuntu ssh sftp

我经常发现自己使用sshsftp并排侧我的Ubuntu终端。典型的工作流程如下所示:

  1. 在不同的终端窗口上使用相同的公钥通过 SSH 和 SFTP 登录到某个服务器。
  2. 使用 SSH 创建一个目录。
  3. put 一些文件通过 SFTP 进入目录。
  4. chmod通过 SSH设置权限。

用两个终端窗口做这一切可能有点烦人,所以我真的更喜欢如果我能让它看起来这一切都发生在一个进程中。

我的问题是:

是否有充分的理由需要将sshsftp进程分开?或者我继续编写一个将它们结合起来的应用程序对我来说是“安全的”吗?

谢谢!

更新:似乎sftp支持许多常见的终端命令。但是,它仍然不支持任何任意终端命令,就像ssh. 所以我仍然希望看到这些问题的答案,而不是解释为什么不需要答案的理由。

Mar*_*ryl 7

没有什么像“SSH 命令”那样。这些是shell命令。对于 SSH 终端/客户端,shell 只是一个带有输入和输出的黑盒子。客户甚至不明白您键入了一些命令,只能理解它们。

因此,任何满足您要求的解决方案都必须针对特定系统和外壳进行定制,以便能够了解您在做什么。

如果您正在键入的命令是 shell 或 SFTP 命令,那么理论上的客户端当然可以具有您用来指定的特定命令或前缀。类似于ftpescape-to-local-shell prefix/command !

但即便如此,您也可能难以匹配当前的工作目录。如果没有别的,那么因为 SFTP 可以被 chroot,而 shell 不能。请记住,SFTP 是一个独立的系统,理论上可以使用完全不同的文件系统表示。

所以结论是,这是可行的,但它涉及太多的黑客攻击和太多的系统和外壳特定,以至于使系统通用几乎不可行。一个可靠的解决方案需要一些服务器端组件(如特殊类型的外壳)。


我知道我在写什么,因为我已经为我的 SFTP 客户端 WinSCP 实现了一些。在那里,在 SFTP 会话中,您可以打开一个终端/控制台窗口,它启动一个 shell 会话并将其工作目录更改为当前的 SFTP 工作目录(通过发送 shellcd命令)。所以我知道这是多么骇人听闻和不可靠的。