В моей последней статье я рассказал, как настроить SSH с Raspberry Pi, чтобы мы могли войти в систему без необходимости вводить пароль. В этой статье мы поговорим о том, как подключить все, чтобы мы могли использовать наш клиент Electron Rsync для подключения к Raspberry Pi и синхронизации файлов с нашего компьютера на Raspberry Pi. Если вы хотите наверстать упущенное или сослаться на предыдущую статью, не стесняйтесь проверить ее ниже.



Поскольку вначале я проявил должную осмотрительность, сделав код модульным и многоразовым, не потребовалось много дополнительной работы, чтобы добавить возможность удаленной синхронизации с Rsync с точки зрения кодирования. Большая часть работы была сосредоточена на правильной аутентификации SSH с помощью графического интерфейса пользователя Electron. Я решил сделать общедоступным доказательство концепции Eikona Sync, если вы хотите клонировать и запускать код локально или отправлять какие-либо PR и проблемы.



Предварительная настройка

Ниже приведены шаги, которые мы изначально сделали в статье о Raspberry Pi без пароля в конце этого руководства. Эти шаги необходимо повторно выполнить для локального контекста нашего проекта Eikona Sync. Я решил повторить эти шаги в терминале VSCode, в котором сейчас открыт проект Eikona Sync.

Первое, что вы делаете, это запускаете свой ssh-агент с

eval "$(ssh-agent -s)"

Это запустит ваш агент SSH в контексте вашего текущего терминала. Это важно, потому что после добавления закрытого ключа SSH к текущему экземпляру агента SSH он будет храниться в этом контексте терминала до тех пор, пока вы не закроете терминал или VSCode. Это позволит нашему приложению Electron аутентифицироваться на нашем удаленном хосте, не требуя, чтобы мы принимали ввод от пользователя для его пароля к удаленному хосту, когда Rsync синхронизирует файлы.

Затем вы добавляете сгенерированный закрытый ключ на удаленный хост с помощью команды, подобной

ssh-add -K ~/.ssh/aragorn_euler-z

Наконец, мы проверим SSH-соединение без пароля с нашим удаленным хостом, чтобы убедиться, что у нас все правильно настроено ниже.

Как только мы сможем правильно войти на наш удаленный хост, мы выходим из этого сеанса SSH и запускаем наше приложение Electron с

npm run electron:serve

Теперь мы можем продолжить работу с графическим интерфейсом Electron Rsync и синхронизировать наши файлы с нашего компьютера на Raspberry Pi. Если вы столкнетесь с какими-либо проблемами, убедитесь, что вы правильно ввели команды или что ваши SSH-ключи были сгенерированы и настроены правильно. Вы всегда можете обратиться к предыдущему руководству, которое я написал, о создании и добавлении ключей SSH на удаленный хост.

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

Самая большая разница заключается в том, что для работы функции удаленной синхронизации вам необходимо убедиться, что ваш SSH без пароля настроен и правильно работает с хостом, с которым вы хотите синхронизироваться. Вы также заметите в пользовательском интерфейсе, что вам нужно ввести IP-адрес пользователя и хоста с соответствующим путем к каталогу, между которым вы хотите выполнить синхронизацию. Я рекомендую вам выполнить синхронизацию с домашним каталогом пользователя, для которого вы создали ключ SSH, чтобы избежать каких-либо проблем с разрешениями, в противном случае команда Rsync может потерпеть неудачу. Примечание. Поскольку это POC, убедитесь, что вы правильно набрали строку удаленного подключения, так как в настоящее время нет проверки регулярного выражения, чтобы убедиться, что вы не ошиблись в строке подключения.

В остальном функциональность и базовый код идентичны как для локальной, так и для удаленной синхронизации. Когда вы входите в систему на своем Raspberry Pi или удаленном хосте, вы должны увидеть соответствующий синхронизированный каталог, аналогичный тому, что изображен на скриншоте ниже.

Когда вы собираете все вместе, мы получаем

В приведенной выше демонстрации вы можете увидеть, как должен работать графический интерфейс Electron Rsync. Примечание. Я сделал ls на Raspberry Pi во время синхронизации, чтобы показать, что файлы копируются, и еще раз после завершения синхронизации.

Я надеюсь, что вы нашли эту статью интересной и полезной; в будущем я мог бы добавить поток входа OAuth в Eikona Sync POC и другие функции. Будьте на связи!