Jak włączyć autouzupełnianie zdalnych ścieżek podczas korzystania z SCP?


37

Zdalnie skopiowałem plik na laptopa za pomocą:

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

Chcę mieć możliwość automatycznego uzupełniania ścieżki zdalnej, naciskając klawisz Tab.


1
Jest włączony rsync, co moim zdaniem jest znacznie lepsze niżscp
Marco Ceppi

3
Jest domyślnie włączony w zsh.
Stéphane Gimenez

3
Jest również włączony scp, przynajmniej działa tutaj. Potrzebujesz klucza ssh już dodanego do agenta ssh.
enzotib

Odpowiedzi:


24

Upewnij się, że masz włączone fantazyjne autouzupełnianie. W wielu dystrybucjach oznacza to, że ~/.bashrcmusisz się powstrzymać . /etc/bash_completion.

Musisz skonfigurować uwierzytelnianie bez hasła, tzn. Z kluczem, który jest już załadowany ssh-agent.

Nawiązanie połączenia SSH jest powolne, dzięki czemu można znacznie przyspieszyć ukończenie, ustanawiając połączenie raz na zawsze, a następnie korzystając z tego połączenia. Stosunkowo skomplikowanym sposobem jest otwarcie połączenia master SSH ssh -N -M target-hostpo skonfigurowaniu połączeń master-slave ~/.ssh/config; instrukcje zobacz Wiele sesji ssh w jednym poleceniu (potrzebujesz opcji ControlMasteri ControlPath).

Prostą metodą jest zamontowanie zdalnego systemu plików na SSHFS i użycie go cpz normalnym zakończeniem powłoki.

mkdir ~/remote
sshfs USER@192.168.178.32:/home/USER ~/remote
cp -p someFile ~/remote/put/it/some/where/oh/damn/you/here

Wygląda na to, że jest coś w /etc/bash_completionźródle ~/.bash_completion. Chcę mieć możliwość korzystania z tej funkcji na zdalnym serwerze, na którym nie mogę pisać /etc/i nie ma go /etc/bash_completion(chociaż istnieje /etc/bash_completion.d/. Czy istnieje wersja, którą można bezpiecznie uruchomić z mojego katalogu domowego? Jest co najmniej jedno odniesienie do ~ / .bash_completion, więc obawiam się, że brakuje mi czegoś więcej i może istnieć cykliczna pętla lub coś innego, co może powodować błędy.
redbmk


2

Możesz przełączyć się na lftp zamiast używać scp. Daje przyjemny spójny interfejs do przesyłania plików przez ftp, sftp i ssh, w tym autouzupełniania, którego szukasz i więcej (tj. Symbole wieloznaczne).

lftp fish: // użytkownik @ maszyna

otwiera połączenie przez ssh, tak jak robisz to z scp. Wiele maszyn obsługuje także sftp: //, co jest jeszcze przyjemniejsze z mojego doświadczenia.


0

Jak powiedział @Giles , upewnij się, że masz poprawnie skonfigurowane automatyczne uzupełnianie i masz klucz ssh na komputerze.

Dodanie tej konfiguracji do mojej ~/.ssh/configzrobiło ogromną różnicę w szybkości.

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

Spowoduje to utworzenie połączenia głównego dla każdego hosta.

Trwałość 10 sekund da ci trochę czasu na zobaczenie katalogu, zanim połączenie zostanie automatycznie zamknięte.

Bez trwałości będziesz musiał odtworzyć połączenie, co spowolni uzupełnianie kart.

Przykład

~$ scp mymachine:~/pa PATKA

path/ palace/ pandas/ porn/

~$ scp mymachine:~/path/to PATKA

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.