我想在登录后通过 ssh 复制文件。scp
它通过登录名、密码、路径复制文件。我想要的是当我在“内部”时能够做同样的事情,最好不提供登录名和密码:
$ ssh [email protected]
root's password:
Welcome to .....
Last login: ....
root@folder1:~# // How do I download (or upload) the files when I'm here?
答案1
正如指出的这个询问 Ubuntu 答案,您可以使用zssh
代替ssh
。使用时zssh
,您可以切换到文件传输方式使用Ctrl+ @。这应该允许您在活动连接的本地端和远程端之间来回传输文件。
其他诡计那个答案中指出是ssh
在你打电话的时候发送到后台scp
。虽然这可能需要重新身份验证,但如果您设置密钥身份验证,这应该不是问题。要发送ssh
到后台,请按Ctrl+ Z。然后,您应该能够使用 来调用scp
,并ssh
在完成后返回fg
。
编辑:正如 muru 所指出的,为了在本地而不是远程处理Ctrl+ Z,您必须使用Enter, ~, Ctrl+ Z。查看 SSH 转义序列。
基本上,scp
只是ssh
工作方式不同。你需要一个技巧来让一个人完成另一个人的工作。我之前链接的问题中给出了其中一些技巧。
答案2
如果设置了控制文件,则可以重用现有的连接身份验证。从man ssh_config
:
ControlMaster
Enables the sharing of multiple sessions over a single network
connection. When set to “yes”, ssh(1) will listen for
connections on a control socket specified using the ControlPath
argument. Additional sessions can connect to this socket using
the same ControlPath with ControlMaster set to “no” (the
default). ...
Two additional options allow for opportunistic multiplexing: try
to use a master connection but fall back to creating a new one if
one does not already exist. These options are: “auto” and
“autoask”. The latter requires confirmation like the “ask”
option.
因此,如果您使用选项进行连接-o ControlMaster=auto -o ControlPath=/tmp/ssh-%h-%r
,则第一个连接可以重复用于scp
。这可以在您的~/.ssh/config
:
Host some-host
ControlMaster auto
ControlPath=/tmp/ssh-%h-%r