Как я могу получить доступ к своему телефону Ubuntu через SSH?

Всякий раз, когда я пытаюсь бежать apt-get install openssh-server Я получаю следующие ошибки:

root@ubuntu-phablet:/home/hablet# apt-get install openssh-server
W: Not using locking for read only lock file /var/lib/dpkg/lock
E: Unable to write to /var/cache/apt
E: The package lists or status file could not be parsed or opened.

6 ответов

С официальным финальным выпуском Ubuntu для телефонов поставляется инструмент "android-gadget-service", с помощью которого вы можете управлять adb, mtp, USB-модемом и ssh.

Подключите ваше устройство через USB, включите режим разработчика в:

"Настройки системы-> Об этом телефоне-> Режим разработчика"

... и запустите (со своего компьютера убедитесь, что экран телефона разблокирован, иначе adb не впустит вас):

adb shell android-gadget-service enable ssh

Скопируйте ваш открытый ключ на телефон:

adb shell mkdir /home/phablet/.ssh
adb push ~/.ssh/id_rsa.pub /home/phablet/.ssh/authorized_keys
adb shell chown -R phablet.phablet /home/phablet/.ssh
adb shell chmod 700 /home/phablet/.ssh
adb shell chmod 600 /home/phablet/.ssh/authorized_keys

Теперь вы можете посмотреть свой IP на телефоне и использовать ssh для подключения:

adb shell ip addr show wlan0|grep inet
ssh phablet@<IP from above command>

Чтобы полностью активировать доступ по SSH через Wi-Fi, без режима разработчика на телефоне, без каких-либо специальных инструментов на вашем компьютере и без использования USB:

  1. Если у вас еще нет пары ключей ssh, введите ssh-keygen на вашем компьютере и следуйте инструкциям для его создания.
  2. Установите приложение терминала на телефон из App Store.
  3. Откройте терминал и наберите (это проще с телефоном в альбомной ориентации):

    sudo setprop persist.service.ssh true
    mkdir -pm700 ~/.ssh
    ip addr
    nc -l 1234 > ~/.ssh/authorized_keys
    

    (последняя команда будет висеть; это ожидается)

  4. Найдите IP-адрес вашего телефона в Терминале, полученный от ip addr Команда выше.

  5. На вашем компьютере введите (заменяя 192.0.2.1 с IP-адресом вашего телефона сверху):

    nc 192.0.2.1 1234 < ~/.ssh/id_rsa.pub
    

    В случае успеха последняя команда на терминале вашего телефона теперь будет выполнена успешно.

  6. На вашем компьютере введите (снова заменить 192.0.2.1 с IP-адресом вашего телефона сверху):

    ssh phablet@192.0.2.1
    
  7. Если IP-адрес вашего телефона изменится, вам нужно будет использовать ip addr снова в приложении "Терминал" на вашем телефоне и соответствующим образом настройте команду ssh.

Сервер OpenSSH теперь (по состоянию на 13 сентября 2013 года) предварительно загружен с установкой Ubuntu Touch. Тем не менее, он также отключен по умолчанию. Вы также не хотите, чтобы SSH работал от root.


Вам необходимо ввести следующее, используя USB-соединение с устройством:

adb shell
su - phablet
sudo tee /etc/init/ssh.override < /dev/null

Чтобы вернуться к отключенному

echo "manual" | sudo tee /etc/init/ssh.override

ОБНОВЛЕНИЕ: (09-Mar-2014)

Ответ выше уже не актуален.

  • По состоянию на начало марта 2014 года, пока файл /etc/init/ssh.override все еще существует, изменение его содержимого не позволяет SSH (на самом деле демон sshd) запускаться при запуске.

  • Последние сборки (протестированные для 226, но, возможно, ранее) теперь поддерживают новый мета-флаг persist.service.ssh, позволяющий SSH (демон sshd) перезапускаться при запуске.

Получить в командной строке (на устройстве)

adb shell
su - phablet

Запустите SSH и установите флаг

sudo service ssh start
sudo setprop persist.service.ssh true

Перезагрузите устройство

sudo reboot

Демон SSH должен запуститься автоматически

sudo service ssh status

Чтобы отключить автозапуск SSH, измените флаг:

sudo setprop persist.service.ssh false

Установите Ubuntu SDK и нажмите "Открыть SSH-соединение с устройством" на панели устройств. Бонус: вы не будете сопротивляться написанию нового Scope...

Попробуйте сделать его доступным для записи и перезагрузите компьютер:

touch /userdata/.writable_image

Редактировать: когда вы создаете его, используйте --pending переключить обновления на фаблет-флеш

Изменить: Системные образы теперь рекомендуемый способ развертывания и обновления Ubuntu Touch

Я только что нашел более быстрый (быстрый и грязный) способ (Внимание: это небезопасно!):

1) Установите приложение терминала и откройте его

2) переключиться на root

sudo su

(введите пароль блокировки экрана)

2) Введите следующие команды:

echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
echo "AllowUsers phablet" >> /etc/ssh/sshd_config
/usr/sbin/sshd

Теперь ваш ssh-сервер работает, и он примет ваш код блокировки экрана в качестве пароля! Внимание: перебор очень легко! Пожалуйста, измените ваши настройки немедленно (теперь вы можете сделать это удобным способом, после подключения через ssh с вашего ПК).

Поскольку вы запускаете sshd вручную, файл /etc/init/ssh.override больше не применяется...

Итак, для подключения с вашего ПК:

ssh phablet@x.x.x.x

где xxxx - это IP-адрес вашего телефона, который вы можете найти, набрав

ifconfig

в терминале вашего телефона.

Наслаждайтесь!

ОБНОВЛЕНИЕ: может случиться так, что после обновления sshd не запускается, потому что он не может открыть ключи хоста, а затем просто восстановить их:

/usr/bin/ssh-keygen -A

Если это не удается из-за отсутствия /var/run/sshd, просто создайте его:

mkdir /var/run/sshd
chmod 755 /var/run/sshd
Другие вопросы по тегам