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

16

Всякий раз, когда я пытаюсь запустить, 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.
user195123
источник
Точно такая же ошибка
user195123
Та же самая ошибка для меня, делающего то же самое - Ubuntu 11.04.
Мале
1
@Malee 11.04 - это конец жизни, из-за этого вы не можете получить помощь для 11.04. Выполните обновление до 12.04 или более поздней версии или до поддерживаемого выпуска, и мы поможем вам исправить это.
Томас Уорд
1
В Ubuntu touch пока нет центра программного обеспечения, а обновление - только для терминала, чего я не делал, пытаясь установить openssh.
user195123
Хорошо, так как я не слишком сильно изменился, как вы думаете, форматирование моего хранилища и перепрошивка Ubuntu помогает?
user195123

Ответы:

27

С официальным финальным выпуском 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>
Огра
источник
Работает отлично, но последняя команда не покажет IP, если сетевой интерфейс не назван wlan0. Мой был wlan2по какой-то причине.
Cos64
Команда: adb push ~ / .ssh / id_rsa.pub /home/phablet/.ssh/authorized_keys Дает мне: not stat '/home/tenleftfingers/.ssh/id_rsa.pub': такого файла или каталога нет
TenLeftFingers
Нет необходимости в режиме разработчика или сделать изображение доступным для записи. См. SSH Ubuntu Touch для простого, рабочего решения. Как всегда при аутентификации без пароля, вам нужно поместить /home/phablet/.ssh/authorized_keysфайл (с открытым ключом ПК, который вы используете для доступа к устройству Ubuntu Touch) на ваше устройство. Запуск ssh -v phablet@<ip-address>(многословный) помогает отладить проблемы входа в систему или разрешения.
Петерино,
@orga Он вещает с zeroconf (avahi-daemon)? Таким образом, я могу видеть свое устройство на nautilus и передавать файлы через sftp.
Хуршид Алам
Я также должен был добавить разрешения: chmod ow ~ /
Mantas Vaitkūnas
17

Чтобы полностью активировать доступ по 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.1IP-адресом вашего телефона сверху):

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

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

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

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

Роби Басак
источник
3
Очень информативный ответ, так как он устраняет оболочку adb и USB-кабель. Два больших пальца вверх!
Трюки
Действительно, очень очень полезный ответ. +2
злостер
@ogra (кто знает лучше меня) говорит мне, что он sudo android-gadget-service enable sshзаменен sudo setprop persist.service.ssh trueи должен использоваться вместо этого, но я не проверял это.
Роби Басак
1
Это должно быть лучшим ответом, так как с BQ Aquarius 5 телефон не может быть обнаружен с помощью метода Android.
Кэт Амстердам,
14

Сервер 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
david6
источник
почему вам нужно все sudo после перехода su -?
Осьминог
1
Строка su - phabletменяет пользователя на фаблета , а не супер-пользователя. Как правило, рекомендуется использовать наименьшие привилегии , чтобы быть менее уязвимыми для атак.
Давид6
этот ответ нуждается в обновлении, посмотрите на @ ogra's
sergiusens
1
Нужно будет сначала рассмотреть и попробовать этот метод.
Давид6
0

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

touch /userdata/.writable_image

Редактировать: при сборке используйте --pendingпереключатель Updates to phablet-flash

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

wojox
источник
Этот ответ больше не актуален.
Попей
0

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

Beernarrd
источник
0

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

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
Андрей Сапегин
источник