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服务的配置与应用.俗话说:“前人栽树,后人乘凉”.我懒得再照书本打一遍了,就从这里拷贝了一份 ...
随机推荐
- subprocess模块windows系统命令和linux系统命令
windows系统 查看所有进程 tasklist 查找指定进程 tasklist | findstr pycharm 程序名称 PID(大写) 数量 大小 python exe 2640 conso ...
- LeetCode(79) Word Search
题目 Given a 2D board and a word, find if the word exists in the grid. The word can be constructed fro ...
- JavaScript正则表达式-重复次数(数量词)
*:表示对前面表达式的匹配出现零次或多次. var reg_pattern = /bo*/;//匹配b.bo.boooo +:表示对前面表达式的匹配连续出现一次或多次. var reg_pattern ...
- lnmp环境运行laravel open_basedir restriction in effect 问题
环境配置:centos 7 : php 7.1.5 Warning: require(): open_basedir restriction in effect. File(/home/wwwroot ...
- HDU 3507 斜率优化 DP Print Article
在kuangbin巨巨博客上学的. #include <iostream> #include <cstdio> #include <cstring> #includ ...
- http过程
当在浏览器里输入URL地址时,http的通讯过程: 1) 连接 DNS解析:URL——>DNS服务器(找到返回其ip,否则继续将DNS解析请求传给上级DNS服务器) Socket连接:通过IP和 ...
- Leetcode 372.超级次方
超级次方 你的任务是计算 ab 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出. 示例 1: 输入: a = 2, b = [3] 输出: 8 示例 2: 输入: a ...
- [uiautomator篇]recent
def Recent(self): d = Device('9410519008004c22098b') displayWidth = int(d.info.get("displayWidt ...
- wsgi 简介
原文博客地址 http://blog.csdn.net/on_1y/article/details/18803563
- 说说icon图标
咳咳,其实我是想copy过来的,然而,他竟然是用代码写的图标... (正经脸)话说icon图标是一种网页中常用图标的一种,网络上有各式各样的应用案例,在此就不多啰嗦了.其实我也不过是用着现成的而已,所 ...