Jak mogę uzyskać dostęp do mojego telefonu Ubuntu przez ssh?

16

Przy każdej próbie uruchomienia apt-get install openssh-serverpojawiają się następujące błędy:

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.
użytkownik195123
źródło
Dokładnie ten sam błąd
195123
Ten sam błąd dla mnie robiącego to samo - ubuntu 11.04.
Malee
1
@Malee 11.04 to koniec życia, z tego powodu nie można uzyskać pomocy dla 11.04. Uaktualnij do wersji 12.04 lub nowszej albo do obsługiwanej wersji, a następnie możemy pomóc Ci to naprawić.
Thomas Ward
1
Ubuntu touch nie ma jeszcze centrum oprogramowania, a aktualizacja jest tylko terminalem, czego nie zrobiłem, próbując zainstalować openssh.
user195123
Ok, ponieważ nie zmieniłem jeszcze zbytnio, czy myślisz, że formatowanie mojej pamięci i ponowne uruchomienie Ubuntu pomaga?
user195123

Odpowiedzi:

27

Wraz z oficjalną wersją końcową Ubuntu dla telefonów zawiera narzędzie „usługa gadżetów z systemem Android”, za pomocą którego możesz zarządzać adb, mtp, tetheringiem USB i ssh.

Podłącz urządzenie przez USB, włącz tryb programisty w:

„Ustawienia systemu-> Informacje o tym telefonie-> Tryb programisty”

... i uruchom (z komputera, upewnij się, że ekran telefonu jest odblokowany, w przeciwnym razie adb odmówi ci wpuszczenia):

adb shell android-gadget-service enable ssh

Skopiuj swój klucz publiczny do telefonu:

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

Teraz możesz sprawdzić swój adres IP w telefonie i użyć ssh do połączenia:

adb shell ip addr show wlan0|grep inet
ssh phablet@<IP from above command>
ogra
źródło
Działa świetnie, ale ostatnie polecenie nie pokaże adresu IP, jeśli interfejs sieciowy nie jest nazwany wlan0. Mój był wlan2z jakiegoś powodu.
Cos64
Polecenie: adb push ~ / .ssh / id_rsa.pub /home/phablet/.ssh/authorized_keys Daje mi: nie mogę stat '/home/tenleftfingers/.ssh/id_rsa.pub': Brak takiego pliku lub katalogu
TenLeftFingers
Nie ma potrzeby używania trybu programisty ani możliwości zapisywania obrazu. Zobacz SSH Ubuntu Touch, aby uzyskać łatwe, działające rozwiązanie. Jak zawsze w przypadku uwierzytelniania bez hasła, musisz umieścić /home/phablet/.ssh/authorized_keysplik (z kluczem publicznym komputera, którego używasz do uzyskania dostępu do urządzenia Ubuntu Touch) na swoim urządzeniu. Uruchamianie ssh -v phablet@<ip-address>(pełne) pomaga debugować problemy z logowaniem lub uprawnieniami.
Peterino
@orga Czy nadaje za pomocą zeroconf (avahi-daemon)? W ten sposób widzę moje urządzenie na nautilusie i przesyłam pliki przez sftp.
Khurshid Alam
Musiałem także dodać uprawnienia: chmod ow ~ /
Mantas Vaitkūnas
17

Aby aktywować dostęp ssh całkowicie przez Wi-Fi , bez trybu programisty na telefonie, bez specjalnych narzędzi na komputerze i bez użycia USB :

  1. Jeśli nie masz jeszcze pary kluczy ssh, wpisz ssh-keygenna komputerze i postępuj zgodnie z instrukcjami, aby ją wygenerować.
  2. Zainstaluj aplikację Terminal na telefonie ze sklepu App Store.
  3. Otwórz terminal i wpisz (jest to łatwiejsze, gdy telefon jest ustawiony poziomo):

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

    (ostatnie polecenie się zawiesi; jest to oczekiwane)

  4. Poszukaj adresu IP telefonu w terminalu, zgodnie z ip addrpowyższym poleceniem.

  5. Na komputerze wpisz (zastępując 192.0.2.1powyższym adresem IP telefonu):

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

    Jeśli się powiedzie, ostatnie polecenie na terminalu telefonu zakończy się powodzeniem.

  6. Na komputerze wpisz (ponownie zastępując 192.0.2.1powyższym adresem IP telefonu):

    ssh [email protected]
    
  7. Jeśli zmieni się adres IP telefonu, musisz ponownie użyć ip addraplikacji Terminal w telefonie i odpowiednio dostosować polecenie ssh.

Robie Basak
źródło
3
Bardzo pouczająca odpowiedź, ponieważ eliminuje powłokę adb i kabel USB. Dwa kciuki w górę!
Stunts
Rzeczywiście bardzo przydatna odpowiedź. +2
zloster
@ogra (który wie lepiej ode mnie) mówi mi, że sudo android-gadget-service enable sshzastąpił sudo setprop persist.service.ssh truei powinien zostać użyty, ale nie przetestowałem tego.
Robie Basak
1
To powinna być najwyższa odpowiedź, ponieważ w BQ Aquarius 5 telefonu nie można wykryć metodą Android.
Kat Amsterdam
14

Serwer OpenSSH jest teraz (od 13 września 2013 r.) Wstępnie zainstalowany z instalacją Ubuntu Touch . Jednak jest również domyślnie wyłączone . Nie chcesz także, aby SSH działał z poziomu roota .


Musisz wpisać następujące dane, używając połączenia USB z urządzeniem:

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

Aby przywrócić wyłączone

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

AKTUALIZACJA: (09-mar-2014)

Powyższa odpowiedź nie jest już aktualna.

  • Na początku marca 2014 r., Gdy plik /etc/init/ssh.overridenadal istnieje, zmiana jego zawartości nie pozwala na uruchomienie SSH (właściwie demona sshd ) podczas uruchamiania.

  • Najnowsze kompilacje (przetestowane pod kątem wersji 226 , ale prawdopodobnie wcześniej) obsługują teraz nową meta-flagę keep.service.ssh , aby umożliwić SSH ( demon sshd ) ponowne uruchomienie przy starcie.

Przejdź do wiersza polecenia (na urządzeniu)

adb shell
su - phablet

Uruchom SSH i ustaw flagę

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

Uruchom ponownie urządzenie

sudo reboot

Demon SSH powinien się automatycznie uruchomić

sudo service ssh status

Aby wyłączyć automatyczne uruchamianie SSH, zmień flagę:

sudo setprop persist.service.ssh false
david6
źródło
dlaczego musisz wszystko sudo po przejściu su -?
Ośmiornica
1
Linia su - phabletzmienia użytkownika na phablet , a nie na superużytkownika. Ogólnie najlepszą praktyką jest używanie najmniejszych uprawnień , aby być mniej podatnym na ataki.
david6
ta odpowiedź wymaga aktualizacji, spójrz na @ ogra's
sergiusens
1
Najpierw trzeba będzie przejrzeć i wypróbować tę metodę.
david6
0

Zainstaluj Ubuntu SDK i kliknij „Otwórz połączenie SSH do urządzenia” na panelu urządzeń. Bonus: nie będziesz się opierać pisaniu nowego zakresu ...

Beernarrd
źródło
0

Właśnie znalazłem szybszy (szybki i brudny) sposób (Uwaga: nie jest bezpieczny!) :

1) Zainstaluj aplikację terminalową i otwórz ją

2) przełącz na rootowanie

sudo su

(wprowadź hasło blokady ekranu)

2) Wprowadź następujące polecenia:

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

Teraz twój serwer ssh jest uruchomiony i zaakceptuje kod blokady ekranu jako hasło! Uwaga: teraz bardzo łatwo jest użyć siły brutalnej! Proszę natychmiast zmienić ustawienia (teraz możesz to zrobić w wygodny sposób, po podłączeniu przez ssh z komputera).

Ponieważ ręcznie uruchamiasz sshd, plik /etc/init/ssh.override nie jest już stosowany ...

Aby połączyć się z komputera:

ssh [email protected]

gdzie xxxx to adres IP telefonu, który można znaleźć, pisząc

ifconfig

w terminalu telefonu.

Cieszyć się!

AKTUALIZACJA : może się zdarzyć, że po aktualizacji sshd nie uruchamia się, ponieważ nie może otworzyć kluczy hosta, a następnie ponownie je wygenerować:

/usr/bin/ssh-keygen -A

Jeśli się nie powiedzie, ponieważ brakuje / var / run / sshd, po prostu go utwórz:

mkdir /var/run/sshd
chmod 755 /var/run/sshd
Andrey Sapegin
źródło