我使用以下命令将文件远程复制到笔记本电脑中:
scp someFile USER@192.168.178.32:/home/USER/put/it/some/where/oh/damn/you/here
我希望能够通过点击选项卡来自动完成远程路径。
zsh
。
scp
,至少在这里有效。您需要一个已经添加到ssh-agent中的ssh-key。
我使用以下命令将文件远程复制到笔记本电脑中:
scp someFile USER@192.168.178.32:/home/USER/put/it/some/where/oh/damn/you/here
我希望能够通过点击选项卡来自动完成远程路径。
zsh
。
scp
,至少在这里有效。您需要一个已经添加到ssh-agent中的ssh-key。
Answers:
确保已打开自动完成功能。在许多发行版中,这意味着您~/.bashrc
需要包含. /etc/bash_completion
。
您需要设置无密码身份验证,即使用已加载的密钥ssh-agent
。
建立SSH连接的速度很慢,因此您可以通过一劳永逸地建立连接并随后使用该连接来大大加快完成速度。相对复杂的方法是ssh -N -M target-host
在中设置了主从连接后,通过打开主SSH连接~/.ssh/config
。有关说明,请参见单个命令中的多个ssh会话(您需要ControlMaster
和ControlPath
选项)。
一种简单的方法是通过SSHFS挂载远程文件系统,并cp
与正常的shell完成一起使用。
mkdir ~/remote
sshfs USER@192.168.178.32:/home/USER ~/remote
cp -p someFile ~/remote/put/it/some/where/oh/damn/you/here
/etc/bash_completion
要来源~/.bash_completion
。我希望能够在无法写入/etc/
且没有写入的远程服务器上具有此功能/etc/bash_completion
(尽管有/etc/bash_completion.d/
。是否存在可以从主目录安全运行的版本?至少有一个引用〜/ .bash_completion,所以我担心我会丢失更多的东西,并且可能存在周期性循环或其他可能导致错误的情况
我要做的就是将我的公钥添加到远程计算机:
cat ~/.ssh/id_rsa.pub | ssh USER@192.168.178.32 "cat - >> ~/.ssh/authorized_keys"
现在,scp
制表符完成。
ssh-copy-id
的,再加上它将为您处理文件权限。
就像@Giles 所说的那样,请确保已正确设置了自动完成程序,并在计算机上设置了ssh键。
将此配置添加到我的计算机上~/.ssh/config
,在速度上产生了巨大的差异。
Host *
ControlMaster auto
ControlPath ~/.ssh/master-socket/%r@%h:%p
ControlPersist 10s
这将为每个主机创建一个主连接。
持续10秒钟将使您有一些时间在自动关闭连接之前查看目录。
没有持久性,您将不得不重新创建连接,这将降低您的选项卡完成速度。
~$ scp mymachine:~/pa
标签
path/ palace/ pandas/ porn/
~$ scp mymachine:~/path/to
标签
~$ scp mymachine:~/path/to/file
标签
rsync
,我认为它远远优于scp