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

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

我经常在 Ubuntu 终端中同时使用ssh和。典型的工作流程如下:sftp

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

使用两个终端窗口进行所有这些操作可能有点烦人,因此,如果我可以使其看起来像是所有操作都发生在一个进程内,我会更希望如此。

我的问题是:

是否有充分的理由将sshsftp流程分开?或者我继续编写一个将它们合并在一起的应用程序是否“安全”?

谢谢!

更新:看起来sftp支持许多常见的终端命令。但是,它仍然不支持任何任意终端命令,就像 的情况一样ssh。所以我仍然希望看到这些问题的答案,而不是为什么答案是不必要的理由。

答案1

没有“SSH 命令”之类的东西。那些是 shell 命令。对于 SSH 终端/客户端来说,shell 只是一个带有输入和输出的黑匣子。客户端甚至不明白你输入了一些命令,更不用说理解它们了。

所以,任何满足您要求的解决方案都必须针对特定的系统和外壳进行定制,以便能够理解您正在做的事情。

当然,如果您输入的命令是 shell 或 SFTP 命令,理论上的客户端可以有您用来指定的特定命令或前缀。与ftpescape-to-local-shell 前缀/命令类似!

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

因此结论是,这是可行的,但它涉及太多黑客攻击,并且与系统和 shell 密切相关,因此很难使系统通用。可靠的解决方案需要一些服务器端组件(如特殊类型的 shell)。


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

答案2

用于sshfs挂载远程文件系统。然后运行命令或复制文件,就像在本地系统上一样。请参阅系统的文档了解它的使用方法。

答案3

我不知道有任何东西可以将 sftp 和 ssh 真正地结合到您描述的单个界面中。如果不详细了解您希望从这样的客户端中看到什么,我无法给出更好的答案。

还有其他方法可以完成您描述的事情。

sftp 可以做到这一切

rbabchis@haze:~/tmp$ sftp localhost
rbabchis@localhost's password: 
Connected to localhost.
sftp> mkdir test
sftp> cd test
sftp> put /home/rbabchis/chicken.JPG
Uploading /home/rbabchis/chicken.JPG to /home/rbabchis/test/chicken.JPG
/home/rbabchis/chicken.JPG                                                                                             100% 2035KB   2.0MB/s   00:00    
sftp> chmod 777 chicken.JPG
Changing mode on /home/rbabchis/test/chicken.JPG
sftp> quit
rbabchis@haze:~/tmp$ 

在 SSH 终端会话中进行传输

但如果谈论的是通过 SSH 在远程 bash 提示符下传输文件,我还没有看到标准的方法来做到这一点。不过,你的问题确实让我想起了 90 年代,当时我们使用了类似调制解调器通过终端会话进行传输。所以我用谷歌搜索了一下,看看我发现了什么。

检查一下(通过 ssh 使用 Zmodem):

http://www.extraputty.com/features/zmodem.html

http://zssh.sourceforge.net/

相关内容