Intel Edision —— 从SSH无法连接到systemd
前言
原创文章,转载引用务必注明链接。如有疏漏,欢迎斧正。
最近在试用Wyliodrin,安装过程中出现了两个问题,一是无法使用SSH登录到Edison;二是EDISON磁盘的问题。分别涉及到systemd和linux文件系统之/dev/loop的理解。
测试环境:Windows 7 64 bit,Xshell 5,WIFI,Intel Edison 最新固件
配置完成后无法通过SSH连接到开发板
【图1 - Intel Edison 配置向导】可以看到此时设置了SSH密码,并连接到了无线网,理论上可以正常连接,根据群里其他人的反馈确实如此
但是我自己测试发现,无法通过SSH连接,串口连接正常(注意,会显示两个串口,试两次就ok了),网络连接正常,为了找问题,我们看一看22端口被谁占用了:
netstat -lnp
【图2 - 系统端口开放情况】可以看到22被PID为1的init初始进程占用,这里可以以及后面佐证可以看到,Edison使用的Yocto Project使用systemd进行管理。之前在树莓派上使用过Raspbian,基于Debian Jessie,也是使用systemd管理,但是Yocto比Debian Jessie 使用systemd更彻底,类似Arch Linux。
解决问题以及探讨可能机制
经群友提醒,重新刷了一边固件,这次可以正常使用SSH登录了,但是22端口仍然被init占用,所以这里我们分析一下。
注意:
系统有没有安装SSH服务?
【图3 - 系统情况】
【图4 - JuiceSSH连接Edison】这里发现系统安装了openssh这个SSH程序,包括服务端和客户端,此外也开启了sshd服务。其中192.168.1.104为Edison地址,108为本机地址,看起来似乎是使用配置向导时配置的,这里起初以为被设置为仅可以使用特定主机、特定网络、本块Edison开发板才可以连接SSH,用手机试了一下,并非如此,其他设备也可以连接。
- static:该配置文件没有
[Install]
部分(无法执行),只能作为其他配置文件的依赖
我们查看一下sshd@0-192.168.1.104:22-192.168.1.108:52281.service 里面写的什么:
systemctl cat sshd@0-192.168.1.104:22-192.168.1.108:52281.service
【图5 - sshd配置文件】可以看到配置文件本体是sshd@.service,启动时执行的命令为/usr/sbin/sshd -i,依赖并在sshdgenkeys.service之后启动。具体请参看阮一峰的博客(二)以及金步国先生翻译的sshd手册
sshd -i:ssh以inetd方式运行;
来自: http://man.linuxde.net/sshd
StandardInput=socket,通过socket传入参数
inetd、socket 与 systemd
一般的启动都是直接写好参数然后让sshd后台运行,这里我们发现了一个参数-i,以及得知一个关键词inetd。继续查找资料,看到OpneBSD手册关于inetd的部分:
DESCRIPTION
inetd should be run at boot time by /etc/rc (see rc(8)). It then listens for connections on certain internet sockets. When a connection is found on one of its sockets, it decides what service the socket corresponds to, and invokes a program to service the request. After the program is finished, it continues to listen on the socket (except in some cases which will be described below). Essentially, inetd allows running one daemon to invoke several others, reducing load on the system.
大致可以这样理解,inetd相当于一个总管,它监听网络上的socket,并根据其特征来分发到对应的后台服务,通常情况下,处理完一个socket之后它会继续监听。这样的好处是仅通过一个守护进程(daemon)来调用多个服务,可以减少系统负载,但是随之可能会导致效率有所降低。
这里猜测init进程监听22端口,并将接收到的网络socket根据特征分发到制定后台服务,其中之一就是sshd(openssh服务器)。这里理解有误,希望大家指正。
观察一下Linux系统启动树:
systemd-cgls
【Linux系统启动树】systemd-cgls命令可以树形递归显示 Linux 控制组结构层次,这里看到init进程后会启动sshd服务。
总结
本文从探讨Edison开启SSH服务的方式入手,主要介绍了systemd机制以及systemctl的部分用法。openssh通过inetd方式开启服务,由init进程监听22端口,将SSH连接请求传递给sshd,与传统直接让sshd监听22端口的方式不同,可能是因为还有其他服务会用到22端口。
Intel Edision —— 从SSH无法连接到systemd的更多相关文章
- Intel Edision —— 上电、基本设置与系统初探
前言 原创文章,转载引用务必注明链接.如有疏漏,欢迎斧正. Intel的文档其实挺清楚了,坛子上很多人把文档又详细复述一边,私以为一篇就够了其他的跟着文档走一遍也挺好的...俗一把使用过程顺手记录下来 ...
- Navicat---使用SSH远程连接到MySql,报错80070007: SSH Tunnel: Server does not support diffie-hellman-group1-sha1 for keyexchange
尝试使用Navicat远程连接到我在阿里云服务器上的MySql,通过SSH. 但是报错: 80070007: SSH Tunnel: Server does not support diffie-he ...
- 使用SSH工具连接到MySQL
在SSH中查看MySQL数据信息 格式为:mysql -h主机地址 -u用户名 -p用户密码 -P端口号 -D数据库名称 例如: mysql -uroot -p123456 -h192.168.1.1 ...
- Intel Edision —— 开发环境选择一贴通
前言 原创文章,转载引用务必注明链接.如有疏漏,欢迎斧正. 使用Intel开发板设置工具配置好之后,会自动跳转到集成开发环境(integrated development environment,ID ...
- ssh远程连接到Ubuntu
1.ubuntu首先得安装ssh sudo apt-get install openssh-server 2.启动ssh sudo /etc/init.d/ssh start 3.检查是否开启 ps ...
- Laradock 如何通过 ssh 方式连接到 workspace
用 docker-compose exec workspace bash 方式可以进入容器,但是还是在 xshell 终端连接比较方便. 在网上也没找到方法,其实可以通过密钥的方式连接.记录一下仅 ...
- REDHAT一总复习1 ssh配置 禁用root用户SSH连接
生成SSH公钥 $ ssh-keygen 生成的公钥安装到指定的服务器上,这里安装到desktop0上的student账户 $ ssh-copy-id desktop0 $ su - 禁用root用户 ...
- Ubuntu安装SSH服务
1 SSH服务 Ubuntu默认并没有安装ssh服务,如果通过ssh远程连接到Ubuntu,需要自己手动安装ssh-server(openssh-server). 1.1 检测是否安装SSH服务 出现 ...
- Telnet、SSH和VNC
以下内容出自<Red Hat Linux服务器配置与应用>第17章:Telnet.SSH和VNC服务的配置与应用.俗话说:“前人栽树,后人乘凉”.我懒得再照书本打一遍了,就从这里拷贝了一份 ...
随机推荐
- Python基本运算符和流程控制
常量 常量即不可改变的量,在Python中不存在常量,我们只能逻辑上规定一个常量并不去修改它,通常用全大写字母表示. 基本运算符之二 算术运算 运算符 说明 ** 幂运算 *, /, //, % 乘. ...
- Atrenta电话面试(C++研发工程师)
1.代码量是多少,你负责哪一块,工作量占%几,改进了什么 2.c++ 和 c 的 区别 3.list 和 vector 的 适用条件 4.hash_map 和 map 的 区别 , 使用h ...
- PYDay1-洗剑
学习语言的阶段: 第一阶段:所有东西都是新的::一个月 第二阶段:开始懂一些::一个月 第三阶段:感觉自己是不可战胜的:第三~第四个月 第四阶段:突然感觉什么都不知道,开发是无止境的::培训阶段不会遇 ...
- js中取绝对值的2种方法!
1.abs() var aaa=-20; var bbb=Math.abs(aaa); 2.加减法 var aaa=-20; var bbb=-aaa
- x86保护模式 控制寄存器和系统地址寄存器
控制寄存器和系统地址寄存器 控制寄存器 crx cr0 指示cpu工作方式的控制位 包含启用和禁止分页管理机制的控制位 包含控制浮点协处理器操作的控制位 注意必须为0的位 cr2和c ...
- BNU OJ 1027 金币系统
金币系统 Time Limit: 1000ms Memory Limit: 65535KB 64-bit integer IO format: %lld Java class name: ...
- TOJ 2710: 过河 路径压缩
2710: 过河 Time Limit(Common/Java):1000MS/10000MS Memory Limit:65536KByteTotal Submit: 32 ...
- 持续集成---jenkins环境部署
一.环境准备 操作系统:linux系统,此时我安装的是centos6.5,操作步骤具体见博客<虚拟机安装centos6.5> 依赖软件:1.jdk, 2.tomcat9(需要安装两个,一个 ...
- 洛谷P1435 回文字串
题目背景 IOI2000第一题 题目描述 回文词是一种对称的字符串.任意给定一个字符串,通过插入若干字符,都可以变成回文词.此题的任务是,求出将给定字符串变成回文词所需要插入的最少字符数. 比如 “A ...
- Pizza Delivery
Pizza Delivery 时间限制: 2 Sec 内存限制: 128 MB 题目描述 Alyssa is a college student, living in New Tsukuba Cit ...