ฉันจะเข้าถึงโทรศัพท์ 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

ข้อผิดพลาดเดียวกันสำหรับฉันทำสิ่งเดียวกัน - Ubuntu 11.04
มาลี

1
@Malee 11.04 เป็นจุดสิ้นสุดของชีวิตคุณไม่สามารถรับความช่วยเหลือสำหรับ 11.04 ที่นี่เพราะสิ่งนั้น อัปเกรดเป็น 12.04 หรือใหม่กว่าหรือเป็นรุ่นที่รองรับแล้วเราสามารถช่วยคุณแก้ไขได้
Thomas Ward

1
Ubuntu touch ยังไม่มีซอฟต์แวร์ศูนย์และการอัพเดทเป็นเทอร์มินัลเท่านั้นซึ่งฉันไม่ได้ทำตามที่ฉันพยายามติดตั้ง openssh
user195123

ตกลงตั้งแต่ฉันยังไม่เปลี่ยนแปลงมากเกินไปคุณคิดว่าการจัดรูปแบบการจัดเก็บของฉันและช่วยอูบุนตู reflashing?
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 ให้ฉัน: ไม่สามารถ stat '/home/tenleftfingers/.ssh/id_rsa.pub': ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
TenLeftFingers

ไม่จำเป็นต้องใช้โหมดผู้พัฒนาหรือทำให้สามารถเขียนรูปภาพได้ ดูSSH Ubuntu Touchสำหรับวิธีแก้ปัญหาที่ใช้งานง่าย เช่นเคยด้วยการรับรองความถูกต้องโดยไม่ใช้รหัสผ่านคุณต้องวาง/home/phablet/.ssh/authorized_keysไฟล์ (ด้วยรหัสสาธารณะของพีซีที่คุณใช้เพื่อเข้าถึงอุปกรณ์ Ubuntu Touch) บนอุปกรณ์ของคุณ การรันssh -v phablet@<ip-address>(verbose) ช่วยในการดีบักปัญหาการเข้าสู่ระบบหรือการอนุญาต
Peterino

@orga มันออกอากาศด้วย zeroconf (avahi-daemon) หรือไม่? ด้วยวิธีนี้ฉันสามารถเห็นอุปกรณ์ของฉันบนหอยโข่งและถ่ายโอนไฟล์ผ่าน sftp
Khurshid Alam

ฉันยังต้องเพิ่มการอนุญาต: chmod โอ๊ย ~ /
Mantas Vaitkūnas

17

เพื่อเปิดใช้งานการเข้าถึง SSH ทั้งหมดผ่าน wifi , โดยไม่ต้องโหมดนักพัฒนาซอฟต์แวร์บนโทรศัพท์มือถือโดยไม่ต้องใช้เครื่องมือพิเศษใด ๆในคอมพิวเตอร์ของคุณโดยไม่ต้องใช้ USB :

  1. หากคุณยังไม่มีคีย์ SSH ให้พิมพ์ssh-keygenบนคอมพิวเตอร์ของคุณแล้วทำตามคำแนะนำเพื่อสร้างรหัส
  2. ติดตั้งแอป Terminal บนโทรศัพท์จาก 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แอพ Terminal ในโทรศัพท์ของคุณอีกครั้งและปรับคำสั่ง ssh ตามนั้น


3
มากคำตอบให้ข้อมูลเท่าที่มันจะไปด้วยเปลือก adb และสาย USB ยกนิ้วให้!
ต้องเลิก

แน่นอนมากคำตอบที่มีประโยชน์มาก +2
zloster

@ogra (ใครจะรู้ดีกว่าฉัน) บอกฉันว่าsudo android-gadget-service enable sshsuperceded sudo setprop persist.service.ssh trueและควรใช้แทน แต่ฉันยังไม่ได้ทดสอบ
Robie Basak

1
นี่ควรเป็นคำตอบยอดนิยมเช่นเดียวกับ BQ Aquarius 5 ไม่สามารถค้นพบโทรศัพท์ด้วยวิธี Android
Kat Amsterdam

14

เซิร์ฟเวอร์ OpenSSH ได้รับการติดตั้งล่วงหน้าด้วยUbuntu Touchตั้งแต่วันที่ 13 กันยายน 2013 แต่ก็ยังปิดการใช้งานโดยค่าเริ่มต้น คุณไม่ต้องการให้ SSH ทำงานจากรู


คุณต้องพิมพ์ข้อมูลต่อไปนี้โดยใช้การเชื่อมต่อ USB กับอุปกรณ์:

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

เพื่อเปลี่ยนกลับเป็นปิดการใช้งาน

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

อัปเดต: (09- มีนาคม - 2014)

คำตอบข้างต้นไม่เป็นปัจจุบันอีกต่อไป

  • ตั้งแต่ต้นเดือนมีนาคม 2014 ในขณะที่ไฟล์/etc/init/ssh.overrideยังคงมีอยู่การเปลี่ยนแปลงเนื้อหาไม่อนุญาตให้ SSH (ที่จริงแล้วคือsshd daemon) เพื่อเรียกใช้เมื่อเริ่มต้น

  • บิวด์ล่าสุด (ทดสอบแล้วสำหรับ226แต่อาจเป็นไปได้ก่อนหน้านี้) รองรับเมตาแฟลกpersist.service.sshใหม่เพื่ออนุญาตให้ SSH ( sshd daemon) เริ่มต้นใหม่เมื่อเริ่มต้น

ไปที่พร้อมรับคำสั่ง (บนอุปกรณ์)

adb shell
su - phablet

เริ่ม SSH และตั้งค่าสถานะ

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

รีสตาร์ทอุปกรณ์

sudo reboot

SSH daemon ควรเริ่มโดยอัตโนมัติ

sudo service ssh status

หากต้องการปิดใช้งานการเริ่มต้นอัตโนมัติ SSH ให้เปลี่ยนค่าสถานะ:

sudo setprop persist.service.ssh false

ทำไมคุณต้อง sudo ทุกอย่างหลังจากไป su -
Octopus

1
บรรทัดsu - phabletจะเปลี่ยนผู้ใช้เป็นphabletไม่ใช่ผู้ใช้ขั้นสูง โดยทั่วไปแล้ววิธีที่ดีที่สุดคือใช้สิทธิ์น้อยที่สุดเพื่อที่จะไม่เสี่ยงต่อการถูกโจมตี
david6

คำตอบนี้ต้องการการอัปเดตดูที่ @ ogra's
sergiusens

1
จะต้องทบทวนและลองใช้วิธีการนั้นก่อน
david6

0

ลองทำให้มันเขียนได้และรีบูต:

touch /userdata/.writable_image

แก้ไข: เมื่อคุณสร้างขึ้นให้ใช้--pendingสวิตช์อัพเดตเป็น phablet-flash

แก้ไข: ภาพระบบตอนนี้เป็นวิธีที่แนะนำในการปรับใช้และอัปเดต Ubuntu Touch


คำตอบนี้ไม่เกี่ยวข้องอีกต่อไป
popey

0

ติดตั้ง Ubuntu SDK และคลิก "เปิดการเชื่อมต่อ SSH ทำอุปกรณ์" ในแผงอุปกรณ์ โบนัส: คุณจะไม่ต่อต้านการเขียนขอบเขตใหม่ ...


0

ฉันเพิ่งค้นพบวิธีที่เร็วกว่า (เร็วและสกปรก) (ข้อควรระวัง: มันไม่ปลอดภัย!) :

1) ติดตั้งแอปเทอร์มินัลและเปิด

2) เปลี่ยนเป็นรูท

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.