Подключение Android телефона к Linux

Полный гайд Подключение Android к Linux через SSHFS

Оглавление

  1. Подготовка телефона (Termux)
  2. Подготовка компьютера Linux
  3. Настройка SSH-соединения
  4. Монтирование через SSHFS
  5. Автоматизация подключения
  6. Устранение проблем

1. Подготовка телефона (Termux)

1.1 Установка Termux

  1. Скачайте Termux:

    • Из F-Droid (рекомендуется)
    • Или из Google Play Store
  2. Установите и откройте Termux

  3. Обновите пакеты:

pkg update && pkg upgrade -y

1.2 Установка необходимых пакетов

# Установка SSH-сервера
pkg install openssh -y

# Установка терминальных утилит
pkg install nano vim -y  # или любой другой редактор

# Установка для работы с памятью
pkg install termux-api -y  # опционально

1.3 Настройка доступа к хранилищу

# Запрос доступа к файлам телефона
termux-setup-storage

# На телефоне появится запрос на разрешение доступа к файлам
# Нажмите "Разрешить"

1.4 Настройка SSH-сервера

# Проверьте текущее имя пользователя
whoami
# Запомните вывод (например, u0_a123)

# Установите пароль для SSH
passwd
# Введите пароль дважды

# Запустите SSH-сервер
sshd

# Проверьте, что сервер работает
ps aux | grep sshd

1.5 Автозапуск SSH (опционально)

# Создайте скрипт автозапуска
vim ~/.bashrc

# Добавьте в конец:
# Запуск SSH-сервера, если не запущен
if ! pgrep -x "sshd" > /dev/null; then
    sshd
fi

# Сохраните (Ctrl+O, Enter, Ctrl+X)

1.6 Узнайте IP-адрес телефона

# В Termux выполните:
ifconfig wlan0

# Найдите inet адрес (например, 192.168.1.100)
# Запомните его - это IP вашего телефона в локальной сети

2. Подготовка компьютера Linux

2.1 Установка SSHFS

# Для Ubuntu/Debian:
sudo apt update
sudo apt install sshfs -y

# Для Fedora/RHEL:
sudo dnf install sshfs -y

# Для Arch:
sudo pacman -S sshfs

# Для openSUSE:
sudo zypper install sshfs

2.2 Установка SSH-клиента (обычно уже установлен)

# Проверьте наличие SSH
which ssh

# Если нет, установите:
# Ubuntu/Debian:
sudo apt install openssh-client -y

2.3 Создание папки для монтирования

# Создайте директорию для монтирования
mkdir -p ~/data/android

# Или любую другую:
# mkdir -p ~/android
# mkdir -p ~/phone

3. Настройка SSH-соединения

3.1 Проверка подключения

# Используйте имя пользователя, полученное в Termux (whoami)
# Используйте IP-адрес телефона
ssh -p 8022 u0_a123@IP_АДРЕСА_ТЕЛЕФОНА

# Например:
ssh -p 8022 u0_a123@192.168.1.100

# При первом подключении подтвердите fingerprint (напишите yes)
# Введите пароль, установленный ранее

3.2 Настройка SSH-ключа (для входа без пароля)

# На компьютере создайте SSH-ключ (если нет)
ssh-keygen -t ed25519 -C "your_email@example.com"
# Нажимайте Enter для стандартных настроек

# Скопируйте публичный ключ на телефон
ssh-copy-id -p 8022 u0_a123@IP_АДРЕСА_ТЕЛЕФОНА

# Или вручную:
cat ~/.ssh/id_ed25519.pub | ssh -p 8022 u0_a123@IP_АДРЕСА_ТЕЛЕФОНА "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

3.3 Настройка .ssh/config (опционально)

# Создайте конфигурационный файл
vim ~/.ssh/config

# Добавьте:
Host android
    HostName IP_АДРЕСА_ТЕЛЕФОНА
    Port 8022
    User u0_a123
    IdentityFile ~/.ssh/id_ed25519
    ServerAliveInterval 60
    ServerAliveCountMax 3

# Сохраните и закройте

# Теперь можно подключаться просто:
ssh android

4. Монтирование через SSHFS

4.1 Создание скрипта монтирования

# Создайте файл для монтирования
vim ~/mount_android.sh

# Добавьте содержимое:
#!/bin/bash

# Переменные
PHONE_USER="u0_a123"  # Замените на ваше имя пользователя
PHONE_IP="192.168.1.100"  # Замените на ваш IP
PHONE_PORT="8022"
PHONE_PATH="/storage/emulated/0"  # Путь к внутренней памяти
MOUNT_POINT="$HOME/data/android"

# Создайте точку монтирования если её нет
mkdir -p "$MOUNT_POINT"

# Проверка, уже смонтировано или нет
if mount | grep -q "$MOUNT_POINT"; then
    echo "Папка уже смонтирована"
    exit 0
fi

# Монтирование
sshfs -p $PHONE_PORT \
    -o follow_symlinks \
    -o idmap=user \
    -o uid=$(id -u) \
    -o gid=$(id -g) \
    -o reconnect \
    -o ServerAliveInterval=15 \
    -o ServerAliveCountMax=3 \
    -o compression=yes \
    -o cache=yes \
    $PHONE_USER@$PHONE_IP:$PHONE_PATH "$MOUNT_POINT"

if [ $? -eq 0 ]; then
    echo "✅ Телефон смонтирован в $MOUNT_POINT"
    ls -la "$MOUNT_POINT" | head -5
else
    echo "❌ Ошибка монтирования"
    exit 1
fi

4.2 Сделайте скрипт исполняемым

chmod +x ~/mount_android.sh

4.3 Выполните монтирование

./mount_android.sh

4.4 Команда для быстрого монтирования

# Если нет желания создавать скрипт
sshfs -p 8022 \
    -o follow_symlinks \
    -o idmap=user \
    -o uid=$(id -u) \
    -o gid=$(id -g) \
    u0_a123@192.168.1.100:/storage/emulated/0 ~/data/android

4.5 Размонтирование

# Обычное размонтирование
fusermount -u ~/data/android

# Принудительное размонтирование
sudo umount -l ~/data/android

5. Автоматизация подключения

5.1 Создание алиасов в .bashrc

# Откройте .bashrc
vim ~/.bashrc

# Добавьте в конец:
# Монтирование телефона
alias mount-phone='~/mount_android.sh'
alias umount-phone='fusermount -u ~/data/android'
alias phone='cd ~/data/android'

# Сохраните и примените:
source ~/.bashrc

5.2 Автоматическое монтирование при входе (опционально)

# Добавьте в ~/.bashrc или ~/.profile:
if [ -f ~/mount_android.sh ]; then
    ~/mount_android.sh
fi

5.3 Создание systemd-сервиса (для автоматического монтирования)

# Создайте сервис
sudo vim /etc/systemd/system/mount-phone.service

# Добавьте:
[Unit]
Description=Mount Android phone via SSHFS
After=network.target

[Service]
Type=oneshot
User=ваше_имя_пользователя
ExecStart=/home/ваше_имя_пользователя/mount_android.sh
ExecStop=/usr/bin/fusermount -u /home/ваше_имя_пользователя/data/android
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

# Включите сервис
sudo systemctl enable mount-phone.service
sudo systemctl start mount-phone.service

6. Устранение проблем

6.1 Проблема: “Host key verification failed”

# Решение:
ssh-keygen -R [IP_АДРЕСА_ТЕЛЕФОНА]:8022
# Или удалите старый ключ:
vim ~/.ssh/known_hosts
# Удалите строку с IP телефона

6.2 Проблема: “Connection refused”

# Проверьте на телефоне в Termux:
sshd
# Проверьте порт:
netstat -tlnp | grep 8022

6.3 Проблема: “Permission denied”

# Проверьте пароль:
passwd  # установите заново в Termux

# Проверьте права на .ssh:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

6.4 Проблема: Медленная работа

# Добавьте опции для ускорения:
sshfs -p 8022 \
    -o compression=yes \
    -o cache=yes \
    -o Ciphers=arcfour \
    u0_a123@IP:/storage/emulated/0 ~/data/android

6.5 Проблема: Телефон засыпает и отключается

# Настройки телефона:
# 1. Отключите оптимизацию батареи для Termux
# 2. Держите Wi-Fi включенным
# 3. Используйте опцию ServerAliveInterval:

sshfs -p 8022 \
    -o ServerAliveInterval=15 \
    -o ServerAliveCountMax=3 \
    u0_a123@IP:/storage/emulated/0 ~/data/android

6.6 Проверка логов

# На телефоне в Termux:
cat ~/.ssh/sshd.log

# На компьютере:
dmesg | grep -i error
journalctl -xe | grep -i sshfs

6.7 Доступ к внешней SD-карте

# Для доступа к внешней SD-карте:
# В Termux сначала найдите путь:
ls -la /storage/

# Обычно это:
sshfs u0_a123@IP:/storage/XXXX-XXXX ~/data/sdcard

# Где XXXX-XXXX - идентификатор вашей SD-карты

Полезные команды

# Проверить, что смонтировано
df -h | grep sshfs

# Показать всё содержимое телефона
ls -la ~/data/android

# Скопировать файл с телефона
cp ~/data/android/DCIM/Camera/photo.jpg ~/Pictures/

# Скопировать файл на телефон
cp ~/Documents/file.pdf ~/data/android/Download/

# Найти файлы на телефоне
find ~/data/android -name "*.mp3"

# Создать ссылку для быстрого доступа
ln -s ~/data/android ~/android

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

  1. Телефон: Установить Termux → pkg install opensshsshdwhoamipasswd → узнать IP
  2. Компьютер: sudo apt install sshfs → создать папку mkdir -p ~/data/android
  3. Подключение: ssh -p 8022 u0_a123@IP (проверка)
  4. Монтирование: sshfs -p 8022 u0_a123@IP:/storage/emulated/0 ~/data/android
  5. Работа: cd ~/data/android и пользуйтесь файлами!