В scp
Команда (openssh) принимает относительные пути как host:path/
которые относятся к домашнему каталогу на хосте. Я хочу изменить расположение каталога по умолчанию.
Например, я хотел бы создать ярлык псевдо-хоста в .ssh/config
по линиям
Host bar
hostName foo
## this directive does not actually exist:
DefaultDirectory /home/me/some/path/here
чтобы я мог написать
scp some_file bar:baz
вместо того
scp some_file foo:some/path/here/baz
Возможно ли это с помощью openssh?
Быстрое решение этой проблемы - создать символическую ссылку в вашем собственном домашнем каталоге на удаленном сервере на каталог, к которому вы хотите получить доступ:
ln -s /your/long/path/here/to/webapp1 ~/webapp1
Это позволит вам быстро получить доступ к папке следующим образом:
scp file foo:webapp1/
и разрешить расширение в будущем (более одной удаленной папки), и это не повредит другие программы. Я обнаружил, что это полезно на моих серверах, когда у меня несколько веб-сайтов, работающих на одном сервере, и мне нужно отправлять на них файлы (сейчас я в основном использую для этого git).
«Домашний» каталог определяется домашним каталогом пользователей, определенным в /etc/passwd
файл. Я не верю, что какой-либо параметр opensshd переопределит это поведение. Вы можете изменить домашний каталог пользователя ... но я не думаю, что это то, что вы ищете.
Другими вариантами, конечно же, являются небольшой скрипт / функция вроде (при условии, что здесь bash):
myscp() {
scp ${1%%:*}${SCP_DIR:?/tmp}/${1#*:}
}