2 июня 2020 г.

SSH-сервер в termux

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

Но андроид на то и линукс

Условия для успешной установки: должен быть termux (в плей маркете оно точно есть, если что - это чрутнутый линукс-терминал) и в самом termux надо поставить пакет openssh:

pkg install openssh

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

Далее, неплохо бы сделать пароль для доступа к трубке:

passwd

Два раза вводим нужный пароль. На сам телефон оно не влияет - только на termux сессию.

После всего этого, неплохо бы сгенерировать пару ключей: публичный и приватный. В termux вводим:

ssh-keygen -t rsa -b 2048 -f id_rsa

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

Стартуем сервер:

sshd

Доступ к нему будет возможен по порту 8022

Далее к трубке можно подключаться со всего, что поддерживает ssh. В линукс системах можно попытаться замонтировать ее. В Windows (впрочем в линукс тоже) подойдет тот же FileZilla FTP Client, который умеет в ssh: необходимо выбрать тип создаваемого соединения как SFTP (SSH File Transfer Protocol)

Имя пользователя всегда игнорируется. Поэтому можно вводить любое. А вот пароль ДОЛЖЕН быть тот, который задан в termux

PS: в линукс системах есть пакет KDECONNECT, который дает сделать много чего полезного для управления компьютером (телефоном особо не поуправляешь) и обмена файлами на уровне меню ОТПРАВИТЬ из файлового менеджера

Если вдруг теряется связь (бывает, но не всегда, когда блокируется трубка),в termux нужно просто убить sshd и запустить заново:

pkill sshd; sshd


DELUGE: ошибка no module named gi.pygtkcompat

проблема старая. Проявляется в OpenSuse. Возможно есть в других, но не проверял Причина: из PyGObject удален модуль pygtkcompat. Но как обыч...