Удалённый доступ

Удалённый доступ

@termuxguide

Termux может получить доступ к удаленным устройствам с помощью некоторых распространенных инструментов. Также возможно превратить устройство под управлением Termux в сервер с удалённым доступом.


Содержание


FTP

Termux предоставляет легкий FTP-сервер, поэтому вы можете управлять своими файлами через удаленное соединение. Этот сервер является частью предустановленного пакета busybox, поэтому вам не нужно ничего дополнительно устанавливать.

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

Чтобы запустить FTP-сервер, вы должны запустить ftpd через tcpsvd:

tcpsvd -vE 0.0.0.0 1024 ftpd /

Команда, показанная выше, запустит FTP-сервер на порт 1024 из корневого каталога (/).

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

tcpsvd -vE 0.0.0.0 1024 ftpd -w /

Затем вы можете подключиться к Termux с другого устройства. Например, чтобы подключиться к Termux с помощью FTP-клиента из командной строки (с ПК):

ftp 192.168.1.3 1024

Не следует запускать FTP на портах ниже 1024. Попытка выдаст следующее сообщение об ошибке:

tcpsvd: bind: Permission denied

SSH

SSH обеспечивает безопасный способ доступа к удаленным хостам и заменяет такие инструменты, как telnet, rlogin, rsh, ftp. Termux предоставляет SSH через два пакета: dropbear и openssh. Если вы никогда не использовали эти инструменты раньше, рекомендуется установить openssh, поскольку он более распространен.

Использование клиента SSH

Вы можете получить SSH-клиент, установив openssh или dropbear.

Пример использования

Чтобы войти на удаленную машину, где ssh работает на стандартном порту (22):

ssh user@hostname_or_ip

То же, что и выше, но если ssh работает на другом порту, например 8022:

ssh -p 8022 user@hostname_or_ip

Использование аутентификации с открытым ключом, когда ssh работает на стандартном порту, и закрытый ключ, хранящийся в файле id_rsa:

ssh -i id_rsa user@hostname_or_ip

Обратите внимание, что если id_rsa будет храниться в каталоге ~/.ssh, вы можете не указывать его в команде. Но если у вас есть несколько ключей, необходимо выбрать определенный ключ с помощью -i {path_to_privkey}.

SSH Agent

Важное примечание: это не работает для Dropbear.

Если вы хотите использовать SSH-agent, чтобы избежать ввода паролей, пакет Termux openssh предоставляет скрипт-обертку с именем ssha (обратите внимание на a в конце) для ssh, который:

  • При необходимости запускает агент ssh (или подключается к нему, если он уже запущен)
  • Запускает ssh-add, если необходимо
  • Запускает ssh с предоставленными аргументами

Это означает, что агент запрашивает пароль ключа при первом запуске, но помнит авторизацию для последующих запусков.


Использование сервера SSH

OpenSSH

OpenSSH (также известный как OpenBSD Secure Shell) - это набор безопасных сетевых утилит, основанный на протоколе Secure Shell (SSH), который обеспечивает безопасный канал через незащищенную сеть в client-server архитектуре.

Запуск и остановка сервера OpenSSH

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

Чтобы запустить сервер OpenSSH, вам нужно выполнить эту команду:

sshd

Если вам нужно остановить sshd, просто убейте его процесс:

pkill sshd

Демон SSH ведет запись в системный журнал, вы можете просмотреть его, запустив logcat -s 'syslog:*'. Вы можете сделать это либо из Termux, либо из ADB.

Настройка аутентификации по паролю

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

1. Убедитесь, что все обновлено и пакет openssh установлен:

pkg upgrade
pkg install openssh

2. Аутентификация по паролю включена по умолчанию в файле конфигурации. Но вы все равно можете просмотреть его ($PREFIX/etc/ssh/sshd_config), это должно быть так:

PrintMotd no
PasswordAuthentication yes
PubkeyAcceptedKeyTypes +ssh-dss
Subsystem sftp /data/data/com.termux/files/usr/libexec/sftp-server

3. Установите новый пароль выполнив команду passwd. Хотя программа допускает минимальную длину пароля 1 символ, рекомендуемая длина пароля превышает 8-10 символов. Пароли не выводятся на консоль.

$ passwd
New password:
Retype new password:
New password was successfully set.

Настройка аутентификации с открытым ключом

Аутентификация с открытым ключом является рекомендуемым способом входа с использованием SSH. Чтобы использовать этот тип аутентификации, вам нужно иметь пару открытый/закрытый ключ. Для успешного входа в систему открытый ключ должен присутствовать в списке авторизованных ключей на удаленном компьютере, а закрытый ключ должен храниться на вашем локальном хосте в безопасности.

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

1. Если у вас нет ключей, вы можете сгенерировать их. В этом примере мы сгенерируем ключ RSA. На ПК выполните эту команду:

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

Команда, показанная выше, генерирует закрытый ключ RSA с длиной ключа 2048 бит и сохраняет его в файл `id_rsa`. В этой же директории вы можете найти файл `id_rsa.pub` - это открытый ключ.

Важное примечание: 2048 бит - это минимальная длина ключа, которая считается безопасной. Можно использовать более высокие значения, но не использовать более 4096, поскольку удаленный сервер может не поддерживать большие ключи.

2. Скопируйте ключ на удаленный компьютер (Termux). Для установки pubkey на удаленном компьютере должна быть включена аутентификация по паролю. Теперь сделайте:

ssh-copy-id -p 8022 -i id_rsa IP_ADDRESS

Не забудьте заменить IP_ADDRESS фактическим IP-адресом локальной сети вашего устройства. Это можно определить с помощью команды ifconfig.

Если все было в порядке, вы увидите следующее сообщение:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh -p '8022' '192.168.1.4'"
and check to make sure that only the key(s) you wanted were added.

3. С этого момента аутентификация по паролю может быть отключена. Отредактируйте файл $PREFIX/etc/ssh/sshd_config и замените строку, начинающуюся с «PasswordAuthentication», на

PasswordAuthentication no

Затем выполните команду pkill sshd ; sshd для перезагрузки сервера с обновленным файлом конфигурации.


Dropbear

Dropbear - это пакет, написанный Мэттом Джонстоном, который обеспечивает Secure Shell сервер и клиент. Он предназначен для замены стандартного OpenSSH для сред с низким объемом памяти и ресурсов процессора, таких как встроенные системы.

Важное примечание: Dropbear не предоставляет SFTP-сервер.

Запуск и остановка сервера Dropbear

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

Сервер работает в фоновом режиме, доступна аутентификация как по паролю, так и по открытому ключу. Для этого просто введите в консоли:

dropbear

Если вам нужна только аутентификация с открытым ключом, сделайте это:

dropbear -s

Также сервер может быть запущен на переднем плане. Для этого используйте параметр `-F`:

dropbear -F

Сервер, запущенный на переднем плане, можно остановить с помощью комбинации клавиш Ctrl + C. Если это фон, то вы можете использовать `pkill`:

pkill dropbear

Настройка аутентификации по паролю

Как и в OpenSSH, аутентификация по паролю включена по умолчанию.

Все, что вам нужно сделать, это:

1. Убедитесь, что все обновлено и установлен dropbear:

pkg upgrade
pkg install dropbear

2. Установите пароль, выполнив команду passwd.

3. Запустите сервер dropbear. Вы можете выполнить либо dropbear, чтобы запустить его в фоновом режиме, либо dropbear -F, чтобы запустить его на переднем плане.

Настройка аутентификации с открытым ключом

Как и в OpenSSH, вы можете поместить свои ключи, используя ssh-copy-id. Но если вы решите настроить аутентификацию с открытым ключом из Termux на что-то другое, стоит упомянуть некоторые важные различия между OpenSSH и Dropbear.

1. Dropbear использует другую команду для генерации ключей. Пример генерации ключа RSA (2048 бит):

dropbearkey -t rsa -f id_rsa -s 2048

2. Открытый ключ должен быть получен вручную. Чтобы сделать это, вы должны снова использовать dropbearkey, но по-другому:

dropbearkey -f id_rsa -y

3. Dropbear и OpenSSH используют разные ключевые форматы. Чтобы использовать ключ Dropbear в OpenSSH, вам придется преобразовать его:

dropbearconvert dropbear openssh ./id_rsa ./id_rsa_openssh

Эту процедуру можно выполнить наоборот, чтобы получить ключ в формате Dropbear:

dropbearconvert openssh dropbear ./id_rsa_openssh ./id_rsa_dropbear

Использование SFTP

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

Подключение к Termux (прослушивание sshd через порт 8022):

sftp -P 8022 192.168.1.20

Подключение к другому месту (прослушивание sshd через стандартный порт):

sftp sftp.example.com

Однако для использования SFTP-клиента из командной строки вы должны знать некоторые основные команды:

  • cd PATH - изменить текущий каталог на `PATH`
  • get REMOTE [LOCAL] - скачать файл `REMOTE` и переименовать его в` LOCAL` (необязательно)
  • mkdir PATH - создать каталог `PATH`
  • ls [PATH] - список файлов в каталоге `PATH`. Если аргумент отсутствует, файлы в текущем каталоге будут перечислены
  • put LOCAL [REMOTE] - Загрузить файл `LOCAL` и переименовать его в` REMOTE` (необязательно)
  • rm FILE - Удалить файл `FILE`

Это не полный список команд SFTP. Чтобы просмотреть все доступные команды, можно просмотреть справочную страницу (man sftp ) или просмотреть краткую справку в интерактивном сеансе SFTP, введя команду help.


MOSH

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

Пример использования:

Важное примечание: Mosh должен быть установлен как на стороне клиента, так и на стороне сервера.

Подключение к удаленному хосту (прослушивание sshd через стандартный порт):

mosh user@ssh.example.com

Подключение к Termux (прослушивание sshd через порт 8022):

mosh --ssh="ssh -p 8022" 192.168.1.25

Rsync

Rsync - это инструмент для синхронизации файлов с удаленными хостами или локальными каталогами (или дисками). Для лучшего опыта использования rsync убедитесь, что установлен пакет `openssh` (или` dropbear`).

Пример использования

Синхронизируйте свои фотографии с ПК:

rsync -av /sdcard/DCIM/ user@192.168.1.20:~/Pictures/Android/

Получить фотографии с удаленного устройства Android:

rsync -av -e 'ssh -p 8022' 192.168.1.3:/sdcard/DCIM/ /sdcard/DCIM/

Синхронизируйте локальные каталоги (например, с внешней SD-карты на домашнюю страницу Termux):

rsync -av /storage/0123-4567/myfiles ~/files

Вы можете захотеть увидеть страницу man (`man rsync`), чтобы узнать больше о ее использовании.





Report Page