Сервер разрешает SSH-соединения, но не использует аутентификацию с открытым ключом. В настоящее время не в моих силах изменить это (из-за технических трудностей, а не организационных), но я займусь этим как можно скорее!
Что мне нужно сейчас заключается в выполнении команд на сервере, используя простой старый аккаунт + пароль аутентификация от скрипт. То есть мне нужно сделать это неинтерактивным способом. Является ли это возможным? И как мне это сделать?
Клиент, который будет выполнять сценарий, работает под управлением Ubuntu Server 8.04. На сервере работают Cygwin и OpenSSH.
Есть утилита linux под названием sshpass
. Он позволяет вам делать именно то, что вы хотите, и будет принимать пароль сервера либо в качестве аргумента командной строки, либо из файла (я предпочитаю этот способ, поэтому мой пароль сервера не отображается в истории оболочки), и вы его используете вот так:
sshpass -f file_with_password ssh user@server ls -la
Это подключит ssh к серверу и запустит ls -la
. Одна вещь, однако, вы должны сначала вручную установить ssh на сервер (если вы еще этого не сделали), чтобы сервер был добавлен в ваш ~/.ssh/known_hosts
. Если вы этого не сделаете, sshpass
не будет работать.
Ты можешь использовать Ожидать сделать это. Очевидно, это нежелательно с точки зрения безопасности, потому что для этого потребуется использовать сценарий, содержащий ваш пароль в виде открытого текста. (Но я не буду вдаваться в подробности, поскольку в своем вопросе вы сказали, что планируете использовать аутентификацию с открытым ключом как можно скорее!)
Немного зависит от используемого вами скриптового языка. Сейчас я пишу почти все на python, где это не проблема. И pyssh, и Paramiko позволяют просто без проблем написать пароль.
Если вы собираетесь сделать это с помощью сценариев (ba) sh и использовать OpenSSH, это станет сложнее. OpenSSH явно запрещает вам вводить пароли в командную строку (поскольку все пользователи могут видеть командную строку, используя что-то вроде ps -fe
, что является плохим моджо). В этом случае вам придется напрямую взаимодействовать с программой ssh и иметь два варианта: