我使用以下命令将文件远程复制到我的笔记本电脑:
scp someFile [email protected]:/home/USER/put/it/some/where/oh/damn/you/here
我希望能够通过点击选项卡来自动完成远程路径。
答案1
确保您已打开精美的自动完成功能。在许多发行版上,这意味着您~/.bashrc
需要包含. /etc/bash_completion
.
您需要设置无密码身份验证,即使用已加载到ssh-agent
.
建立 SSH 连接的速度很慢,因此您可以通过一次性建立连接并随后使用该连接来显着加快完成速度。相对复杂的方法是ssh -N -M target-host
在设置主从连接后打开主 SSH 连接~/.ssh/config
;看单个命令中的多个 ssh 会话获取说明(您需要ControlMaster
和ControlPath
选项)。
简单的方法是将远程文件系统挂载到SSHFScp
并与正常的 shell 完成一起使用。
mkdir ~/remote
sshfs [email protected]:/home/USER ~/remote
cp -p someFile ~/remote/put/it/some/where/oh/damn/you/here
答案2
我所需要做的就是将我的公钥添加到远程计算机:
cat ~/.ssh/id_rsa.pub | ssh [email protected] "cat - >> ~/.ssh/authorized_keys"
现在scp
制表符完成了。
答案3
就像@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
标签
答案4
您可以切换到lftp 而不是使用scp。它为您提供了一个良好一致的界面,用于通过 ftp、sftp 和 ssh 进行文件传输,包括您正在寻找的自动完成功能等(即通配符)。
lftp鱼://用户@机器
通过 ssh 打开连接,就像上面使用 scp 所做的那样。许多机器也支持 sftp:// ,根据我的经验,这更好。