¿Cómo habilitar el autocompletado para rutas remotas cuando se usa scp?


37

Copié remotamente un archivo a mi computadora portátil usando:

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

Quiero poder completar automáticamente la ruta remota presionando la pestaña.


1
Está habilitado para rsync, lo que en mi opinión es muy superior ascp
Marco Ceppi

3
Está habilitado por defecto en zsh.
Stéphane Gimenez

3
También está habilitado scp, al menos funciona aquí. Necesita una clave ssh ya agregada a un agente ssh.
enzotib

Respuestas:


24

Asegúrese de haber activado el autocompletado sofisticado. En muchas distribuciones, esto significa que ~/.bashrcnecesita contener . /etc/bash_completion.

Deberá tener configurada la autenticación sin contraseña, es decir, con una clave que ya esté cargada ssh-agent.

Establecer una conexión SSH es lento, por lo que puede acelerar considerablemente las finalizaciones estableciendo una conexión de una vez por todas y utilizando esa conexión a partir de entonces. La forma relativamente complicada de hacerlo es abrir una conexión SSH maestra ssh -N -M target-hostdespués de configurar las conexiones maestro-esclavo en ~/.ssh/config; vea Múltiples sesiones ssh en un solo comando para obtener instrucciones (necesita las opciones ControlMastery ControlPath).

El método simple es montar el sistema de archivos remoto sobre SSHFS y usarlo cpcon la terminación normal del shell.

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

Parece que hay algo en la /etc/bash_completionfuente ~/.bash_completion. Quiero poder tener esta función en un servidor remoto donde no puedo escribir /etc/y no existe /etc/bash_completion(aunque sí existe /etc/bash_completion.d/. ¿Existe una versión que sea segura de ejecutar desde mi directorio de inicio? Hay al menos una referencia a ~ / .bash_completion, así que me temo que faltan más y podría haber un ciclo cíclico u otra cosa que pueda causar errores.
redbmk


2

Puede cambiar a lftp en lugar de usar scp. Le brinda una interfaz agradable y consistente para la transferencia de archivos a través de ftp, sftp y ssh, incluido el autocompletado que está buscando y más (es decir, comodines).

lftp fish: // usuario @ máquina

abre una conexión a través de ssh como lo hace arriba con scp. Muchas máquinas también admiten sftp: //, lo cual es aún mejor en mi experiencia.


0

Como ha dicho @Giles , asegúrese de que la configuración de autocompletar correctamente tenga su clave ssh en la máquina.

Agregar esta configuración a mi ~/.ssh/confighizo una gran diferencia en la velocidad.

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

Esto creará una conexión maestra para cada host.

La persistencia de 10 segundos le dará tiempo para ver el directorio antes de que la conexión se cierre automáticamente.

Sin la persistencia, tendrá que volver a crear una conexión y ralentizará la finalización de su pestaña.

Ejemplo

~$ scp mymachine:~/pa LENGÜETA

path/ palace/ pandas/ porn/

~$ scp mymachine:~/path/to LENGÜETA

~$ scp mymachine:~/path/to/file LENGÜETA

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.