scp를 사용할 때 원격 경로에 자동 완성을 활성화하는 방법은 무엇입니까?


37

다음을 사용하여 파일을 랩톱에 원격으로 복사했습니다.

scp someFile USER@192.168.178.32:/home/USER/put/it/some/where/oh/damn/you/here

탭을 눌러 원격 경로를 자동 완성 할 수 있기를 원합니다.


1
사용할 수있어 rsync내 의견에 훨씬 우수하다,scp
마르코 Ceppi

3
기본적으로 사용하도록 설정되어 zsh있습니다.
Stéphane Gimenez

3
그것은 scp또한 적어도 여기에서 작동합니다. ssh-agent에 이미 추가 된 ssh 키가 필요합니다.
enzotib

답변:


23

멋진 자동 완성 기능을 설정했는지 확인하십시오. 많은 배포판에서 이것은 ~/.bashrc포함해야 함을 의미 합니다 . /etc/bash_completion.

비밀번호가없는 인증을 설정해야합니다 (예 : 이미로드 된 키 사용) ssh-agent.

SSH 연결 설정 속도가 느리므로 연결을 한 번에 설정 한 후 그 연결을 사용하여 완료 속도를 상당히 높일 수 있습니다. 이를 수행하는 비교적 복잡한 방법은 ssh -N -M target-host마스터 슬레이브 연결을 설정 한 후 마스터 SSH 연결을 여는 것 입니다 ~/.ssh/config. 지시 사항 은 단일 명령에서 여러 ssh 세션을 참조하십시오 ( ControlMasterControlPath옵션 필요 ).

간단한 방법은 SSHFS를 통해 원격 파일 시스템을 마운트하고 cp일반적인 쉘 완료와 함께 사용 하는 것입니다.

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이므로 누락 된 부분이 많고 순환 루프 또는 오류를 일으킬 수있는 다른 요소가있을 수 있습니다.
redbmk


2

scp를 사용하는 대신 lftp로 전환 할 수 있습니다. 그것은 당신이 찾고있는 자동 완성 등을 포함하여 ftp, sftp 및 ssh를 통한 파일 전송을위한 훌륭한 일관된 인터페이스를 제공합니다 (예 : 와일드 카드).

lftp fish : // user @ machine

scp로 위와 같이 ssh를 통해 연결을 엽니 다. 많은 컴퓨터가 sftp : //도 지원하므로 내 경험이 훨씬 좋습니다.


0

@Giles가 말했듯 이 자동 완성을 올바르게 설정했는지 확인하십시오. 시스템에 ssh 키가 있어야합니다.

이 구성을 추가 ~/.ssh/config하면 속도가 크게 달라집니다.

Host *
 ControlMaster auto
 ControlPath ~/.ssh/master-socket/%r@%h:%p
 ControlPersist 10s

각 호스트에 대한 마스터 연결이 생성됩니다.

10s 지속은 연결이 자동으로 닫히기 전에 디렉토리를 볼 수있는 시간을 제공합니다.

지속성이 없으면 연결을 다시 작성해야하며 탭 완성 속도가 느려집니다.

~$ scp mymachine:~/pa

path/ palace/ pandas/ porn/

~$ scp mymachine:~/path/to

~$ scp mymachine:~/path/to/file

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.