неинтерактивный пароль SSH в JAVA - PullRequest
1 голос
/ 18 ноября 2011

У меня есть программа, которая требует каскадного SSH, т.е. это ssh-сервер A, а затем используется тот же сервер подключения ssh B.Сервер А действует как мост.У меня есть экземпляр оболочки, которая используется для ssh первого сервера.

Когда я делаю ssh user @ ipAddress, он запрашивает пароль.Я попробовал ssh user @ ipAddress \ npassword.Кажется, он не работает.

Я не могу использовать какие-либо внешние инструменты, такие как ssh-agent или ожидаем.У меня нет контроля над сервером A.

Можно ли указать пароль в качестве аргумента или ввести пароль?

Спасибо !!

Ответы [ 3 ]

3 голосов
/ 18 ноября 2011

Вы должны сгенерировать ключ RSA на клиенте

ssh-keygen

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

Пошаговое руководство дано здесь .

Редактировать : Если у вас нет доступа к серверу, используйте ssh-библиотеку для Java, как описано в этот вопрос .

1 голос
/ 18 ноября 2011

Либо вы можете установить логин без пароля , либо вы можете просто ввести пароль, как описано здесь :

ssh -t -t <machine> <<EO_MY_INPUT
<password>
date # (or whichever is the command to get date/time)
exit
EO_MY_INPUT
0 голосов
/ 18 ноября 2011

Поскольку вы не можете использовать функцию ожидаем или ssh-keygen

Следующий gem может быть использован для сценария ssh сессии пароля

http://www.debian -administration.org / статьи / 587

#!/bin/bash
# Copyright (C) 2008 John S. Skogtvedt <jss at bzz.no>
# Licence: GNU GPL v3 or later at your option

if [ -n "$SSH_ASKPASS_FD" ]
then
        read password <&$SSH_ASKPASS_FD
        echo "$password"
        exit 0
elif [ $# -lt 1 ]
then
        echo "Usage: echo password | $0 <ssh command line>" >&2
        exit 1
fi

export SSH_ASKPASS=$0
export SSH_ASKPASS_FD=4
[ "$DISPLAY" ] || export DISPLAY=dummy:0
read password

exec 3<&0
# write password 100 times to make repeated ssh connections work
for x in $(seq 100)
do
  echo "$password"
done | exec setsid "$@" 4<&0 0<&3

Сохранить выше как asksshpass.sh можно chmod +x

echo "yourpassword" | ./sshaskpass.sh ssh user@server.example.com date
...