从 ssh 会话到本地主机的 SCP 文件

SCP file from ssh session to localhost

我有一个无头文件服务器,我在上面存储和管理下载和媒体,但偶尔我必须将小文件传输回我的计算机(Mac,使用 bash shell).问题是有些文件的名字比较好听,里面通常有空格,而且它们被隐藏在我在我的服务器上设置的文件目录层次结构中。

当我在本地机器上使用 scp 时,我没有制表符补全功能,所以我必须手动输入完整的路径和名称并用空格转义。当我ssh先进入服务器时,命令:

scp /home/me/files/file\ name\ with\ spaces.png Me@localhost:/Users/Me/MyDirectory

即使我正确输入了我的本地计算机用户密码,也会失败并显示错误 "Permission denied, please try again"。

我学习了一些 sftp,因为有人告诉我这可能是更好的文件传输工具。但是,该实用程序似乎已过时,在建立与服务器的连接后我仍然没有完成制表符(在我的终端上按 Tab 时我只得到一个制表符)。

我的问题是:在使用我的 Mac 中的 scp 时,我该怎么做才能允许制表符补全?或者我在 ssh 会话中对 scp 使用了不正确的语法,我应该修复该命令中的某些内容吗?或者,是否有除 sftp 之外的(更好?更新?)工具可以在服务器上提供制表符完成功能?

最后,如果 none 这些问题有简单的解决方案,是否有一些我可以安装的包(例如来自 Homebrew 的完成包等)可以促进使用这些命令中的任何命令更好地完成制表符?

在我看来这有些不正确 scping。

这是命令的格式

scp ./localFile.txt remoteUser@remoteHost:/remoteFile.txt

你离得太近了,但你localhost设置了你应该remoteHost的地方。

localhost 是解析为您当前所在的 machine 的名称 - 因此在您的工作流程中,您正在 sshing 到 machine ,然后尝试 scp 该文件到您已经 ssh 进入的相同 machine。

您需要做的是找出您尝试连接的计算机的 IP 地址或物理主机名,然后改用它。

scp ./localFile.txt remoteUser@192.168.1.100:/remoteFile.txt
# where 192.168.1.100 would be the IP of your Mac

我假设您被拒绝许可的原因是因为您使用了您的登录凭据 mac,但在不知不觉中尝试再次登录您的无头 machine。