2012-09-20 2 views
0

Я хотел бы автоматизировать скрипт bash, который подключается к серверу с помощью sftp и передает передачу файла. У меня есть пароль для этого, и сначала я пытался для этогопередать пароль sftp в сценарии bash

sftp [email protected]$host << EOF 
<passwd_here> 
cd $dir 
get $file 
quit 
EOF 

, но он по-прежнему будет предложено ввести пароль, и мне пришлось ввести его вручную в командной строке.

После поиска SO, я нашел this post, который имел решение с expect, который я попробовал, и я получил следующее сообщение об ошибке:

Сценарий:

sftp -b cmdfile.txt [email protected]$host 
expect "Password:" 
send "<passwd>\n"; 
interact 

Ошибка:

Permission denied (publickey,keyboard-interactive). 

cmdfile.txt

cd $dir 
get $file 
quit 

Пожалуйста, дайте мне знать, как подключиться с помощью пароля в сценарии bash?

+2

Лучше 'ожидать scripts' может быть написано, но я предложил бы получить sshpass на клиентском хосте. sshpass более защищен и меньше подвержен ошибкам, чем sftp. – anubhava

ответ

-1

С помощью scp/sftp вы должны использовать аутентификацию на основе ключа. Открытый ключ от пользователя, которому вы хотите аутентифицировать копию в файле ~/.ssh/authorized_keys на сервере, в домашний каталог пользователя, для которого вы хотите войти в систему. Хранение пароля в открытом тексте на стороне клиента не является хорошей практикой, вы знаете :) Таким образом, вы «обходной» проблемой чтения пароля из подсказки тоже.

+1

Удаленный хост предоставил пароль. Я не могу установить открытые ключи на хосте. Пожалуйста, дайте мне знать, как передать это в скрипте. – mtk

+0

Что значит «удаленный хост предоставил пароль»? Если бы он предоставил пароль для входа в систему, запись не имела бы смысла. Если вы можете использовать scp/sftp, то вы, вероятно, сможете скопировать открытый ключ на удаленном сервере, на ~/.ssh/authorized_keys пользователя (или «authorized_keys2»). Сгенерируйте свои ключи с помощью ssh-keygen .. –

-1

Да, ключ-основанный auth - путь. Проверьте here в определенном направлении.

5

Пожалуйста, попробуйте ниже шаги

lftp -u $user,$pass sftp://$host << --EOF-- 
cd $directory 
put $srcfile 
quit 
--EOF-- 
+1

Я никогда не слышал о 'lftp', это очень полезное решение для тех из нас, у кого нет возможности настроить SSH-ключи. – ccbunney

Смежные вопросы