I remote copied a file to my laptop using:
scp someFile USER@192.168.178.32:/home/USER/put/it/some/where/oh/damn/you/here
I want to be able to autocomplete the remote path by hitting tab.
I remote copied a file to my laptop using:
scp someFile USER@192.168.178.32:/home/USER/put/it/some/where/oh/damn/you/here
I want to be able to autocomplete the remote path by hitting tab.
Make sure that you've turned on the fancy autocompletion. On many distributions, this means your ~/.bashrc
needs to contain . /etc/bash_completion
.
You'll need to have passwordless authentication set up, i.e. with a key that's already loaded in ssh-agent
.
Establishing an SSH connection is slow, so you can considerably speed up completions by establishing a connection once and for all and using that connection thereafter. The relatively complicated way to do that is to open a master SSH connection with ssh -N -M target-host
after setting up master-slave connections in ~/.ssh/config
; see Multiple ssh sessions in single command for instructions (you need the ControlMaster
and ControlPath
options).
The simple method is to mount the remote filesystem over SSHFS and use cp
with normal shell completion.
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
to source ~/.bash_completion
. I want to be able to have this feature on a remote server where I can't write to /etc/
and there is no /etc/bash_completion
(though there is /etc/bash_completion.d/
. Is there a version that would be safe to run from my home directory? There's at least one reference to ~/.bash_completion so I'm afraid there is more I'm missing and there could be a cyclical loop or something else that might cause errors.
– redbmk
Nov 13 '12 at 23:28
All I needed to do was to add my public key to the remote machine:
cat ~/.ssh/id_rsa.pub | ssh USER@192.168.178.32 "cat - >> ~/.ssh/authorized_keys"
And now scp
tab-completes.
ssh-copy-id
is for, plus it will handle the file permissions for you.
– glenn jackman
Jul 07 '13 at 12:52
Like @Giles has said, make sure you have setup auto complete properly have have you ssh key on the machine.
Adding this configuration to my ~/.ssh/config
made a huge difference in the speed.
Host *
ControlMaster auto
ControlPath ~/.ssh/master-socket/%r@%h:%p
ControlPersist 10s
This will create a master connection for each host.
The 10s persist will gives you some time to see the directory before the connection is automatically closed.
Without the persist you will have to recreate a connection and it will slow your tab completion down.
~$ scp mymachine:~/pa
TAB
path/ palace/ pandas/ porn/
~$ scp mymachine:~/path/to
TAB
~$ scp mymachine:~/path/to/file
TAB
pa
is not a prefix of porn
so it would not be displayed in the autocomplete options : )
– nolandda
Feb 25 '21 at 17:59
You could switch to lftp instead of using scp. It gives you a nice consistent interface for file transfer over ftp, sftp and ssh including the autocomplete you are looking for and more (i.e. wildcards).
lftp fish://user@machine
opens a connection over ssh like you do above with scp. Many machines support sftp:// too which is even nicer in my experience.
rsync
, which in my opinion is far superior toscp
– Marco Ceppi Mar 03 '12 at 17:36zsh
. – Stéphane Gimenez Mar 03 '12 at 18:17scp
also, al least it works here. You need an ssh-key already added to an ssh-agent. – enzotib Mar 03 '12 at 20:56