『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 28178|回复: 60

[进阶教程] Hassio下使用SSH远程开关Linux/Mac

  [复制链接]

13

主题

148

帖子

1071

积分

金牌会员

Rank: 6Rank: 6

积分
1071
金钱
923
HASS币
0
发表于 2019-11-21 01:21:52 | 显示全部楼层 |阅读模式
本帖最后由 549876099 于 2022-3-21 04:22 编辑

游客,如果您要查看本帖隐藏内容请回复

Hassio 有 RPC 插件可以很方便的关闭 Windows 主机,但是在配置 Unix 系统的关闭时遇到较多坑。

Error running command:"", return code: 255

看以前的教程会遇到上述错误,以下教程解决了这个问题。

一、配置 Unix 端(被控主机)无密码运行 sudo shutdown

1.修改sudoers文件

1)首先,找到shutdown的路径

$ which shutdown

通常位于/sbin/shutdown

2)打开visudo

$ sudo visudo

3)在文件底部填下如下内容

USERNAME ALL=NOPASSWD: PATH_TO_EXECUTABLE
  • 替换USERNAME为实际使用的账户(可使用whoami查询)
  • 替换PATH_TO_EXECUTABLE为第一步中获取到的路径

一个例子

garry ALL=NOPASSWD: /sbin/shutdown

2.执行命令

由于shutdown仍然是特权命令,因此仍然需要在命令开头加上sudo。

但是,指定用户执行该命令已不需要输入密码。

$ sudo shutdown -r now

*.对于喜欢冒险的人

可将以下内容放在sudoers文件的底部:

USERNAME ALL=NOPASSWD: ALL

上面的代码可以取消所有命令对于 sudo 的密码需求,请谨慎使用。

二、配置 SSH 无密码登陆

1. Hassio 主机生成用于免密登陆的密钥

HassioAdd-on Store中安装SSH server。注意,若 Hassio 是安装在 Ubuntu 系统中,不能使用 Ubuntu 的 SSH,必须连接到容器内部,启动 SSH server时请注意端口冲突问题。

密钥不能生成在默认目录,新建文件夹

$ mkdir /config/.ssh

创建 key

$ ssh-keygen -t rsa

储存位置输入

/config/.ssh/id_rsa

不要输入密码

2.被控端创建存储密钥的文件夹

若该文件夹已经存在,请跳到下一步

$ mkdir -p .ssh

3.将密钥传输到被控端

Hassio中执行以下命令

$ cat /config/.ssh/id_rsa | ssh UNIX_USERNAME@UNIX_IP 'cat >> .ssh/authorized_keys'

4.现在可以在Hassio免密登录Unix

$ ssh -i /config/.ssh/id_rsa UNIX_USERNAME@UNIX_IP

三、配置 Homeassistant

configuration.yaml中添加如下配置,网络唤醒部分请另行配置。

shell_command:
  unix_off: ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /config/.ssh/id_rsa UNIX_USERNAME@UNIX_IP sudo /sbin/shutdown now
switch:
  - platform: wake_on_lan
    mac_address: "UNIX_MAC"
    host: UNIX_IP
    name: "unix"
    turn_off:
      service: shell_command.unix_off

四、参考:

1.How to run privileged (sudo) commands without the password
2.SSH login without password
3.Hass.io shell_command error


评分

参与人数 2金钱 +40 收起 理由
jyz_0501 + 20 厉害了word楼主!
+ 20 厉害了word楼主!

查看全部评分

回复

使用道具 举报

1

主题

9

帖子

130

积分

注册会员

Rank: 2

积分
130
金钱
121
HASS币
0
发表于 2024-2-5 09:16:00 | 显示全部楼层
请问提示这个是什么原因 Service shell_command.unix_off called service switch.turn_off which was not found.
回复

使用道具 举报

0

主题

23

帖子

125

积分

注册会员

Rank: 2

积分
125
金钱
102
HASS币
0
发表于 2024-2-4 21:17:08 | 显示全部楼层
学习一下!!!!!!!!!!!
回复

使用道具 举报

1

主题

9

帖子

130

积分

注册会员

Rank: 2

积分
130
金钱
121
HASS币
0
发表于 2024-2-4 21:05:14 | 显示全部楼层
感谢分享
回复

使用道具 举报

0

主题

1

帖子

36

积分

新手上路

Rank: 1

积分
36
金钱
35
HASS币
0
发表于 2024-2-4 00:20:50 | 显示全部楼层
学习一下!!!!!!!!!!!
回复

使用道具 举报

1

主题

26

帖子

162

积分

注册会员

Rank: 2

积分
162
金钱
136
HASS币
0
发表于 2023-10-23 08:36:50 | 显示全部楼层
学一下,谢谢
回复

使用道具 举报

1

主题

29

帖子

210

积分

中级会员

Rank: 3Rank: 3

积分
210
金钱
181
HASS币
0
发表于 2023-9-22 11:00:05 | 显示全部楼层
谢谢分享
回复

使用道具 举报

12

主题

186

帖子

1213

积分

金牌会员

Rank: 6Rank: 6

积分
1213
金钱
1027
HASS币
0
发表于 2023-9-20 02:19:21 | 显示全部楼层
谢谢楼主的分享。
我也想通过这种方式控制macOS上的快捷指令。但有一个问题
我在树莓上的HASS中的SSH生成密钥后,将密钥传输到被控端这个操作好像没有成功,提示要输入密码,好像输入没成功呢?
回复

使用道具 举报

0

主题

12

帖子

122

积分

注册会员

Rank: 2

积分
122
金钱
110
HASS币
0
发表于 2023-9-6 17:44:37 | 显示全部楼层

谢谢分享
回复

使用道具 举报

0

主题

32

帖子

181

积分

注册会员

Rank: 2

积分
181
金钱
149
HASS币
0
发表于 2023-9-6 17:30:38 | 显示全部楼层
6666666666666666
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-20 02:27 , Processed in 0.058672 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表