2008-11-07 8 views
3

Есть ли способ передать пароль в ssh автоматически. Я хотел бы автоматически передать ssh на сервер без с использованием аутентификации с открытым ключом или ожидать сценариев, чтобы как-то получить ssh для чтения пароля из stdin или файла.Автоматизация SSH без использования аутентификации открытого ключа или ожидания (1)

Причина, по которой это должно быть, заключается в том, что я хотел бы сделать резервную копию моих файлов на сервере, используя rsync/ssh, выполняемые как задание cron. Этот сервер устанавливает мой домашний каталог после, он аутентифицирует меня, поэтому использование аутентификации с открытым ключом не работает, поскольку ~/.ssh недоступен до тех пор, пока логин не будет успешным. ожидать (1) не может быть и речи, потому что я хотел бы запустить его как задание cron, и поскольку задания cron не работают под терминалом, комбинация expect/ssh просто не работает. У меня нет доступа root к этому серверу, и было бы сложно заставить администраторов вносить какие-либо изменения в то, как все работает там.

ответ

2

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

Вы можете найти инструкции здесь: http://linuxproblem.org/art_9.html

Поскольку я просто более внимательно прочитать вопрос, вы можете посмотреть вокруг другого клиента SSH, который поддерживает аутентификацию по паролю без взаимодействия с пользователем. Я быстрый поиск Google дал понять, что они существуют (http://www.derkeiler.com/Newsgroups/comp.security.ssh/2004-12/0134.html)

Связанные StackOverflow вопросы:

-1

Вы не поняли, как открытый ключ работы аутентификации , Вам не нужен доступ к удаленному домашнему каталогу, просто поместите локальный открытый ключ в удаленный файл authorized_keys. У вас есть google, есть много гидов.

+0

Файловая система дистанционного управления не имеет его каталог не установлен, пока после его сеанса начинается. Поэтому `authorized_keys` не будет найден. – 2008-11-07 03:43:30

+0

Должен быть пользователь, который делает монтаж. Даже если это root, аутентификация с открытым ключом безопаснее, чем наличие пароля для входа в систему. – 2008-11-07 03:50:48

0

Это обсуждение говорит о том, что вы пытаетесь сделать:

http://cygwin.com/ml/cygwin/2004-02/msg01449.html

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

0

SSH требует «прыжка веры» для обеспечения первоначального рукопожатия против будущего вмешательства. (Сначала вы доверяете ключу, которое сервер дает вам)

Один из доступных в настоящее время, но не хорошо известный подход - использовать SSH-SRP. Это использует взаимные знания пароля для аутентификации и предоставления ключей шифрования сеанса, необходимых для безопасного шифрования вашей сессии ssh.

Его МНОГО БОЛЬШЕ безопаснее, чем первоначальное «доверие ко мне» SSH и не требует долговременного хранения ключей.

6

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

Вы можете запускать сценарии ожидания из cron, по крайней мере, вы можете ожидать от библиотек, подобных «pexpect» для Python. Я только что проверил это, чтобы подтвердить, выполнив скрипт pexpect scp/ssh из cron, и я смог успешно выполнить scp-файл из сценария Python, работающего в cron.

Пример кода:

#!/usr/bin/python 

import pexpect 

FILE="/path/to/file" 
REMOTE_FILE="" 
USER="user" 
HOST="example.com" 
PASS="mypass" 
COMMAND="scp -oPubKeyAuthentication=no %s %[email protected]%s:%s" % (FILE, USER, HOST, REMOTE_FILE) 

child = pexpect.spawn(COMMAND) 
child.expect('password:') 
child.sendline(PASS) 
child.expect(pexpect.EOF) 
print child.before 
-1

Не используйте ожидать, pexpect или тому подобное, чтобы кормить в пароле. Если вы это сделаете, ваш пароль должен быть где-то в обычном тексте, который может быть менее безопасным, чем использование пары общедоступных/закрытых ключей без пароля. И это больше!

Прочитайте эту страницу из "SSH: The Definitive Guide" для обсуждения ваших вариантов: http://www.snailbook.com/faq/no-passphrase.auto.html