3

Я новичок в bash и пишу bash-скрипт, который позволит передавать файлы между двумя компьютерами. Кстати, есть ли более безопасная альтернатива scp?

В настоящее время я делаю это вручную, используя scp. Удаленный сервер всегда запрашивает у меня пароль, и я его предоставляю. Я хочу автоматизировать это (следовательно, скрипт bash). Однако я не хочу указывать свой пароль в виде обычного текста (или, если вообще, - у меня сложилось впечатление, что открытый SSL отменяет пароли и использует сертификаты и т.д.?).

Может кто-нибудь объяснить, как я могу автоматизировать свой текущий процесс, без явного отображения моего пароля.

Я работаю на Ubuntu 10.0.4

2 ответа2

7

Для входа без пароля необходимо настроить аутентификацию на основе ключей. Существует несколько учебных пособий, которые выглядят как хорошее место для начала (редактирование: исходный сайт выпал из Интернета, эта ссылка на последнюю копию, архивированную WayBackMachine).

Если вы добавите парольную фразу в свой ключ (рекомендуется), вам все равно нужно будет указать это при входе в систему, но вы можете использовать ssh-agent, чтобы уменьшить количество раз, когда вы должны предоставлять его.

Если вам нужны сценарии, которые используют SSH/SCP для запуска без присмотра, вам не нужно иметь ключевую фразу на вашем ключе, но в этом случае вы обязательно должны хранить этот файл ключа в безопасности, чтобы никто другой не мог его прочитать, иначе они не смогут аутентифицироваться на этом сервере как вы без пароля / парольной фразы.

0

введите пароль для scp

Передача пароля на стандартный ввод scp не будет работать:

echo "password" | scp file user@host:/dir/to/copy/to

потому что scp не читает со стандартного ввода по соображениям безопасности.

Вместо этого используйте инструмент sshpass:

Возможно, вам придется установить sshpass от имени пользователя root, поскольку он нестандартный.

sshpass -p 'mypassword' scp -r el@myserv.com:/home/a/moo.txt /home/b/bar.txt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .