使用 scp 时如何为远程路径启用自动完成?

k0p*_*kus 41 bash ssh autocomplete

我使用以下命令将文件远程复制到我的笔记本电脑:

scp someFile USER@192.168.178.32:/home/USER/put/it/some/where/oh/damn/you/here
Run Code Online (Sandbox Code Playgroud)

我希望能够通过点击选项卡来自动完成远程路径。

Gil*_*il' 29

确保您已打开花哨的自动完成功能。在许多发行版中,这意味着您~/.bashrc需要包含. /etc/bash_completion.

您需要设置无密码身份验证,即使用已加载到ssh-agent.

建立 SSH 连接很慢,因此您可以通过一劳永逸地建立连接并在此后使用该连接来显着加快完成速度。相对复杂的方法是ssh -N -M target-host在 中设置主从连接后打开一个主 SSH 连接~/.ssh/config;有关说明,请参阅单个命令中的多个 ssh 会话(您需要ControlMasterControlPath选项)。

简单的方法是通过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
Run Code Online (Sandbox Code Playgroud)


k0p*_*kus 8

我需要做的就是将我的公钥添加到远程机器上:

cat ~/.ssh/id_rsa.pub | ssh USER@192.168.178.32 "cat - >> ~/.ssh/authorized_keys"

现在scp选项卡完成。

如果您需要先设置密钥,请看这里。

  • 这就是 `ssh-copy-id` 的用途,此外它还将为您处理文件权限。 (10认同)