Я использую авторизованный ключ для входа на удаленный сервер ubuntu. Мне нужно использовать scp
часто копировать файлы с моей локальной машины на удаленную. Я хочу включить автозаполнение, как это было на моем локальном компьютере, bash-autocompletion
.
Как я мог это сделать?
Я попытался zsh
(https://github.com/robbyrussell/oh-my-zsh), scp
отлично работает с автозаполнением. Как я мог сделать это с моим bash
?
Насколько мне известно, Ubuntu и Debian содержат bash-completion
упакуйте именно те функции, которые вы просите. Однако если на удаленном сервере реализована схема предотвращения попыток взлома (например, путем ограничения количества подключений в течение заданного временного интервала и блокировки, если клиент превышает его), вы столкнетесь с проблемами.
Проверьте /etc/bash_completion
в вашей системе и /etc/bash_completion.d/ssh
. Если его не существует, обязательно apt-get install bash-completion
. Как только это будет сделано, убедитесь, что ваш .bashrc
или .profile
загружает этот глобальный файл автозаполнения.
Обычно это дает возможность как автозаполнение имени удаленного хоста из вашего $HOME/.ssh/known_hosts
(grep _known_hosts_real /etc/bash_completion
) и автозаполнение для удаленных папок на scp
.
Одно предупреждение: если удаленный хост выводит дополнительные данные при входе в систему, автозаполнение имеет тенденцию прерываться. Один из способов обойти это может быть (но я обнаружил, что это не работает везде), чтобы выручить без каких-либо выходных данных на удаленном компьютере:
[ -z "$SSH_TTY" ] && exit
... т.е. не показывать баннер или что-то в этом роде. Вы включаете эту строку в /etc/sshd/sshrc
на удаленном поле или вверху (под хэшбангом) любого скрипта, который вы выполняете, чтобы показать художественную форму ASCII отпечатка пальца. Обратите внимание, что приведенная выше строка является синтаксисом bourne-shell, при необходимости измените его. Он проверяет, SSH_TTY
окр. переменная пуста, и если да, то выходит с кодом выхода 0.
Я думаю, что нет, поскольку у вас нет доступа к удаленной файловой системе, пока вы не нажмете Enter и не аутентифицируетесь при выполнении SCP.
bash-autocompletion срабатывает только после успешного входа в систему на удаленном сервере или после загрузки профиля bash, который в случае локального входа в систему является источником сценария завершения bash.
вы можете посмотреть sshfs, который монтирует удаленную файловую систему локально, а затем вы можете выполнить автозаполнение для этого.