Определите, нужно ли "да" при выполнении SCP

Я пишу сценарий Groovy для создания SCP. Обратите внимание, что я еще не запускал его, потому что остальная часть еще не закончена. Теперь, если вы делаете scp в первый раз, придется аутентифицировать отпечаток пальца. Будущие времена, вы не делаете.

Мое текущее решение состоит в том, что, поскольку я получаю 3 попытки для пароля, и мне действительно нужно только 1 (это не значит, что скрипт неправильно наберет пароль... если это неправильно, это неправильно!) - это передать "да", так как Первая попытка пароля. Таким образом, он примет отпечаток пальца при необходимости и использует правильный пароль в качестве первой попытки. Если это не нужно, в качестве первой попытки указывается "да", а во второй - "правильное".

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

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

def command = []
command.add('scp')
command.add(srcusername + '@' + srcrepo + ':' + srcpath)
command.add(tarusername + '@' + tarrepo + ':' + tarpath)

def process = command.execute()
process.consumeOutput(out)
process << "yes" << LS << tarpassword << LS
process << "yes" << LS << srcpassword << LS
process.waitfor()

Спасибо,

glowcoder

3 ответа

Решение
man ssh_config

"... StrictHostKeyChecking Если этот флаг установлен в yes'', ssh(1) will never automatically add host keys to the ~/.ssh/known_hosts file, and refuses to connect to hosts whose host key has changed. This provides maximum protection against trojan horse attacks, though it can be annoying when the /etc/ssh/ssh_known_hosts file is poorly main‐ tained or when connections to new hosts are frequently made. This option forces the user to manually add all new hosts. If this flag is set toнет '', ssh автоматически добавит новые ключи хоста в файлы известных хостов пользователя. Если этот флаг установлен в ask'', new host keys will be added to the user known host files only after the user has confirmed that is what they really want to do, and ssh will refuse to connect to hosts whose host key has changed. The host keys of known hosts will be verified automatically in all cases. The argument must beда'', no'', orпросить''. По умолчанию это `` ask ''...."

Почему бы не написать оболочку для ssh, которая в основном выполняет ssh-keyscan, а затем проверяет наличие хоста в ~/.ssh/known_hosts? Если это не в known_hosts, то ожидайте, что да.

К сожалению, небезопасный ответ: http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html

(В основном кормить ssh директивы опций команды, которые заставляют это смотреть на /dev/null для ключей хоста и игнорируйте тот факт, что он никогда не видел ключ раньше - устраняет проблему, но отбрасывает все меры безопасности и оставляет вас открытыми для атак с использованием пароля или сбора секретного ключа)

Другие вопросы по тегам