Как я могу получить доступ к своему телефону 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:
- Если у вас еще нет пары ключей ssh, введите
ssh-keygen
на вашем компьютере и следуйте инструкциям для его создания. - Установите приложение терминала на телефон из App Store.
Откройте терминал и наберите (это проще с телефоном в альбомной ориентации):
sudo setprop persist.service.ssh true mkdir -pm700 ~/.ssh ip addr nc -l 1234 > ~/.ssh/authorized_keys
(последняя команда будет висеть; это ожидается)
Найдите IP-адрес вашего телефона в Терминале, полученный от
ip addr
Команда выше.На вашем компьютере введите (заменяя
192.0.2.1
с IP-адресом вашего телефона сверху):nc 192.0.2.1 1234 < ~/.ssh/id_rsa.pub
В случае успеха последняя команда на терминале вашего телефона теперь будет выполнена успешно.
На вашем компьютере введите (снова заменить
192.0.2.1
с IP-адресом вашего телефона сверху):ssh phablet@192.0.2.1
Если 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