Как выполнить rsync с нестандартным портом и двухфакторной аутентификацией 2FA?

Мне нужно выполнить rsync с удаленным сервером, используя нестандартный SSH-порт и 2FA, которые я использую через приложение Authy. SSH работает с этой командой:

ssh -2 -p 9999 -i /Users/Me/.ssh/id_rsa  [email protected] 

Это вызовет в оболочке приглашение «Код подтверждения». В который я вхожу от Authy, и я в нем.

Учитывая обсуждение этого ответы StackOverflow Я попробовал этот вариант rsync:

rsync -rvz -e 'ssh -p 9999 -i /Users/Me/.ssh/id_rsa \
   --progress    /src/   [email protected]:/dest/

(Поместите здесь две строки только для разборчивости, это одна строка в моей команде оболочки).

Это вызывает запрос кода подтверждения, который я ввожу правильно, но затем выдает эту ошибку:

protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(185) [sender=3.1.3]

Как я могу использовать rsync с 2FA? Большое спасибо.


person Khom Nazid    schedule 19.02.2019    source источник
comment
из какой ОС подключаетесь? Является ли клиент openssh?   -  person jhnc    schedule 19.02.2019
comment
serverfault.com/questions/267154 / и какие версии rsync на клиенте и сервере   -  person JGK    schedule 19.02.2019
comment
@jhnc Я думал, что включил это в описание, но, видимо, сейчас. Mac OSX, последний Мохаве. Непонятно что за клиент. Это приложение Terminal в OSX.   -  person Khom Nazid    schedule 19.02.2019
comment
Спасибо @JGK - на самом деле в удаленном скрипте я использовал условное отображение, только если оболочка интерактивна. Теперь rsync работает. Большое спасибо!   -  person Khom Nazid    schedule 19.02.2019
comment
Спасибо, @jww, но существует так много вариантов: переполнение стека, сбой сервера, стек... XYZ, что трудно всегда знать, где что-то подходит. Для меня автоматизация передачи кода на основе сервера является частью рабочего процесса разработки. В любом случае, было бы здорово, если бы этот технически подкованный веб-сайт автоматически распределял вопросы по соответствующим форумам, сохраняя при этом доступ к ним из любого места. Это уже происходит лучше, чем несколько лет назад, с интегрированным меню. Спасибо за терпение к людям, задающим вопросы, где, по их мнению, они должны быть. Не на 100% точно, учитывая серые области.   -  person Khom Nazid    schedule 21.02.2019


Ответы (1)


Потому что @JGK упомянул ответ в комментарии, добавив ответ здесь для потомков. Этот материал «чиста ли ваша оболочка» отображается, когда удаленный сервер повторяет какой-то вывод при входе в систему, что в моем случае .bashrc действительно было. Я добавил условие к этому эху, чтобы оно применялось только тогда, когда вход в оболочку является «интерактивным», как указано в этот поток сбоев сервера, и он работает. Просто для большей ясности условие ЕСЛИ выглядит следующим образом:

if echo "$-" | grep i > /dev/null; then
  [any code that outputs text here]
fi

Большое спасибо.

person Khom Nazid    schedule 19.02.2019