Поскольку кажется, что ограничение больше на стороне удобства пользователя (не нужно вводить пароль снова и снова), лучшим выбором здесь будет ввести ваш открытый ключ (файл .pub
в вашей папке ~/.ssh
) в файл назначения ~/.ssh/authorized_keys
.
Здесь папки ~
означают дома пользователей, которые задействованы на машинах источника и назначения соответственно.
Если userA@machine1
авторизован на userB@machine2
, то (и только тогда) пароль не нужен, когда userA@machine1
открывает SSH-соединение с userB@machine2
. Авторизация осуществляется исключительно посредством ассиметричного шифрования (только авторизованный пользователь должен иметь свой собственный закрытый ключ), поэтому пароль не нужен.
Таким образом, команды scp
и ssh
по-прежнему будут иметь 2 соединения (но всегда только одно за раз, не одновременно!), но оба будут полностью беспарольными.
Если у вас нет доступа к серверу, вы должны попросить администратора добавить ваш файл с открытым ключом. Всем задействованным машинам нужен только ваш единственный файл открытого ключа.
На самом деле, у меня запущен cronjob, который почти выполняет точно такую же задачу (ssh
для запуска дампа, затем scp
для копирования, даже с базой данных MySQL), забавное совпадение. ;)
Чтобы копировать каталоги, вам нужно сказать cp
копировать рекурсивно, передав ему флаг -r
.
cp -R ~/dir/*/* ~/target/
Если ~/target
не существует, вам нужно сначала создать его.
mkdir ~/target