1

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

Есть ли другой способ, например, параметр командной строки для команды ssh (например, --password = 'asdf') или перенаправление ввода ("<")?

7 ответов7

2

Вы также можете использовать SSH-клиент dropbear, который позволяет указывать пароль в командной строке, например: Dropbear для автоматического входа для сценариев оболочки

2

Я бы сказал, чтобы использовать ключ RSA или попробуйте этот: http://bash.cyberciti.biz/security/expect-ssh-login-script/ с учетом того, что вам нужно установить expect инструмент.

Но так как вы сказали « нет» RSA и expect , единственный способ - написать свой собственный скрипт, используя conch Twisted (http://twistedmatrix.com/projects/conch/documentation/examples/) или любую другую доступную платформу, которая предлагает SSH реализация, такая как ruby или Perl

2

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

Справочная страница ssh sais:

Аутентификация на основе хоста работает следующим образом: если компьютер, с которого пользователь входит в систему, указан на /etc/hosts.equiv или /etc/ssh/shosts.equiv на удаленном компьютере, а имена пользователей совпадают с обеих сторон, или если файлы ~ /.rhosts или ~ /.shosts существуют в домашнем каталоге пользователя на удаленном компьютере и содержат строку, содержащую имя клиентского компьютера и имя пользователя на этом компьютере, пользователь считается для входа в систему , Кроме того, сервер должен иметь возможность проверять ключ хоста клиента (см. Описание /etc /ssh /ssh_known_hosts и ~ /.ssh /known_hosts ниже), чтобы разрешить вход в систему. Этот метод аутентификации закрывает дыры в безопасности из-за подмены IP-адресов, подмены DNS и подмены маршрутизации. [Примечание для администратора: /etc/hosts.equiv, ~ /.rhosts и протокол rlogin /rsh в целом небезопасны и должны быть отключены, если требуется безопасность.]

2

Если вы знакомы с Python, вы можете попробовать Paramiko.

1

В Debian и производных есть пакет под названием sshpass (сайт здесь), который предназначен именно для этого.

0

Посмотрите на опцию ControlMaster в ssh_config. Это позволяет вам вручную открыть аутентифицированный туннель, который используют все следующие ssh-соединения.

-1

Если у вас запущен X, вы можете написать крошечный X-код (например, в Tcl/Tk или Tkinter), который отправляет пароль на стандартный вывод. Затем все, что вам нужно сделать, это установить переменную окружения SSH_ASKPASS на путь этого кода.

от человека ssh:

SSH_ASKPASS Если ssh требуется фраза-пароль, она будет считывать фразу-пароль с текущего терминала, если она была запущена с терминала. Если ssh не имеет связанного с ним терминала, но установлены DISPLAY и SSH_ASKPASS, он запустит программу, указанную SSH_ASKPASS, и откроет окно X11 для чтения парольной фразы. Это особенно полезно при вызове ssh из .xsession или связанного скрипта. (Обратите внимание, что на некоторых машинах может потребоваться перенаправить ввод из /dev /null, чтобы сделать эту работу.)

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