Получение шеллскрипта для ввода пароля - PullRequest
2 голосов
/ 15 апреля 2011

Я новичок в написании шелл-скриптов (и не очень-то путешествовал в мире Linux) и пытаюсь получить шеллскрипт для автоматического входа на сервер sftp с моими данными. Вот как далеко я продвинулся

#!/bin/bash
HOST='somehost.com'
USER='someusername'
PASSWD='somepass'

sftp $USER@$HOST

Теперь я столкнулся с проблемой. На этом этапе мне будет предложено ввести пароль. Так как же заставить скрипт автоматически отвечать паролем при запросе? Я также попытался найти способ передать пароль с помощью команды sftp, но безуспешно. Может кто-нибудь помочь мне разобраться?

Ответы [ 5 ]

3 голосов
/ 14 декабря 2011

Используйте этот код:

#!/bin/bash
HOST='somehost.com'
USER='someusername'
PASSWD='somepass'

echo $PASSWD | sftp $USER@$HOST
2 голосов
/ 15 апреля 2011

Не храните пароли в файлах сценариев, если только вы не навязчиво навязываете свои ограничения.

Для всех вещей ssh ​​/ sftp / scp используйте аутентификацию с открытым ключом. Узнайте о настройках, которые можно установить как на стороне клиента, так и на стороне сервера, чтобы сделать его более безопасным (ограничения ip, ограничения пользователя, ограничения шифрования, количество повторных попыток, количество одновременных входов в систему и т. Д.). Это само по себе должно устранить большую небезопасность из-за к вопросам написания сценариев.

Если вам абсолютно необходимо хранить пароль в переменной, не экспортируйте его и не сбрасывайте его, как только вы закончите с ним.

2 голосов
/ 15 апреля 2011

Не стоит включать пароль в командную строку или такой скрипт. Любой, кто имеет доступ к списку запущенных процессов, может увидеть ваш пароль, он может оказаться в вашей истории оболочки и файлах журнала. Так что это создаст дыру в безопасности.

В этой ветке есть дополнительная информация , где рекомендуется аутентификация на основе ключей вместо предложенного вами метода.

1 голос
/ 16 апреля 2011
  1. на локальном хосте (где будет выполняться скрипт) сгенерируйте пару ключей ssh:

    scriptuser @ scripthost: / ~ $ ssh-keygen -t rsa Генерация открытого / частного ключа rsaпара.Введите файл для сохранения ключа (/home/michal/.ssh/id_rsa): {нажмите ENTER!} (...)

  2. скопируйте сгенерированный открытый ключ из scripthost вsomehost.com и добавьте его в список аутентифицированных хостов:

    scriptuser @ scripthost: / ~ $ cat ~ / .ssh / id_rsa.pub |ssh someuser@somehost.com 'cat >> .ssh / authorized_keys'

  3. теперь вы можете использовать scp или sftp без пароля:

    scriptuser @ scripthost:/ ~ $ scp / any / local / file someuser@somehost.com: / remote / location /

0 голосов
/ 28 апреля 2014

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

...