如何通过ssh访问我的Ubuntu手机?


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 2013年

对于我做同样的事情,同样的错误-Ubuntu 11.04。
Malee 2013年

1
@Malee 11.04寿终正寝,因此您在这里无法获得11.04的帮助。升级到12.04或更高版本,或升级到受支持的版本,然后我们可以帮助您修复它。
托马斯·沃德

1
Ubuntu touch还没有软件中心,并且更新仅是终端,在尝试安装openssh时我没有这样做。
user195123 2013年

好的,因为我还没有进行太多更改,您认为格式化存储和刷新ubuntu是否有帮助?
user195123 2013年

Answers:


27

在正式的最终版本中,Ubuntu for Phones附带了“ android-gadget-service”工具,您可以使用该工具来管理adb,mtp,USB绑定和ssh。

通过USB连接设备,在以下位置启用开发人员模式:

“系统设置->关于此手机->开发人员模式”

...并运行(从您的PC上,确保解锁手机屏幕,否则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给我:无法统计'/home/tenleftfingers/.ssh/id_rsa.pub':无此类文件或目录
TenLeftFingers

无需开发人员模式或使图像可写。有关简单,有效的解决方案,请参见SSH Ubuntu Touch。与无密码身份验证一样,您需要在设备上放置一个/home/phablet/.ssh/authorized_keys文件(使用用于访问Ubuntu Touch设备的PC的公钥)。运行ssh -v phablet@<ip-address>(详细)有助于调试登录或权限问题。
Peterino '16

@orga是否使用zeroconf(avahi-daemon)广播?这样,我可以在nautilus上看到我的设备,并通过sftp传输文件。
库尔希德·阿拉姆

我还必须添加权限:chmod
ow〜

17

完全通过wifi激活ssh访问,而无需在手机上使用开发人员模式无需在计算机上使用任何特殊工具,也无需使用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 addr命令返回的终端中查找手机的IP地址。

  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命令。


3
非常有用的答案,因为它消除了adb外壳和USB电缆。太棒了!
特技

确实,非常有用的答案。+2
zloster

@ogra(谁比我更了解)告诉我该sudo android-gadget-service enable ssh取代了sudo setprop persist.service.ssh true,应该改用它,但我尚未对此进行测试。
罗比·巴萨克

1
这应该是最好的答案,因为BQ Aquarius 5无法使用android方法找到手机。
凯特·阿姆斯特丹

14

OpenSSH服务器现已(截至2013年9月13日)预装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

更新:(2014年3月9日)

上面的答案不再是当前的。

  • 截至2014年3月上旬,该文件/etc/init/ssh.override仍然存在,但更改其内容将不允许SSH(实际上是sshd守护程序)在启动时运行。

  • 最新的版本(已测试226,但可能更早)现在支持新的meta- flagpersist.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

su后,为什么需要对所有内容进行sudo-?
章鱼

1
该行将用户su - phablet更改为phablet,而不是超级用户。通常,最佳实践是使用最小特权,以减少受到攻击的可能性。
david6

这个答案需要更新,请看@ ogra's
sergiusens

1
首先需要审查并尝试该方法。
david6


0

安装Ubuntu SDK,然后在设备面板中单击“打开SSH连接以执行设备操作”。奖励:您不会拒绝编写新的示波器...


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服务器正在运行,它将接受您的屏幕锁定代码作为密码!注意:现在蛮力很容易!请立即更改设置(从PC通过ssh连接后,现在可以舒适的方式进行设置)。

由于您手动运行sshd,因此不再应用/etc/init/ssh.override文件...

因此,要从您的PC连接:

ssh phablet@x.x.x.x

其中xxxx是您手机的IP地址,您可以通过键入以下内容来查找

ifconfig

在手机的终端中。

请享用!

UPDATE:可能是,更新后,sshd无法启动,因为它无法打开主机密钥,然后仅重新生成它们:

/usr/bin/ssh-keygen -A

如果由于缺少/ var / run / sshd而失败,则只需创建它:

mkdir /var/run/sshd
chmod 755 /var/run/sshd
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.