ssh无法启动 (code=exited, status=255)

服务器运行了一些脚本后,突然发现无法ssh了。

root@X61T:/home/liang# service sshd restart
Job for ssh.service failed because the control process exited with error code.
See "systemctl status ssh.service" and "journalctl -xe" for details.

使用systemctl检查状态

Systemd是一个系统管理守护进程、工具和库的集合,用于取代System V初始进程。Systemd的功能是用于集中管理和配置类UNIX系统。在Linux生态系统中,Systemd被部署到了大多数的标准Linux发行版中,只有为数不多的几个发行版尚未部署。

常用的systemctl命令:

systemctl list-unit-files                               列出所有可用的单元
systemctl list-units                                     列出所有运行中单元
systemctl --failed                                        列出所有失败单元
systemctl status firewalld.service           检查某个单元或服务是否运行
systemctl list-unit-files --type=service    列出所有服务(启用和禁用)
systemctl start httpd.service                    启动
systemctl restart httpd.service                 重启
systemctl stop httpd.service                     停止
systemctl reload httpd.service                 重载服务
systemctl status httpd.service                  检查状态

检查一下ssh.service的状态

root@X61T:/home/liang# systemctl status ssh.service

发现

Process: 3448 ExecStart=/usr/sbin/sshd -D $SSHD_OPTS (code=exited, status=255)
Process: 3445 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
......
Jan 30 08:18:03 X61T systemd[1]: Starting OpenBSD Secure Shell server...
Jan 30 08:18:03 X61T systemd[1]: ssh.service: Main process exited, code=exited, status=255/n/a
Jan 30 08:18:03 X61T systemd[1]: Failed to start OpenBSD Secure Shell server.
Jan 30 08:18:03 X61T systemd[1]: ssh.service: Unit entered failed state.
Jan 30 08:18:03 X61T systemd[1]: ssh.service: Failed with result 'exit-code'.
使用journalctl访问内部的数据
root@X61T:/home/liang# journalctl -u ssh.service

Jan 30 08:18:03 X61T systemd[1]: Starting OpenBSD Secure Shell server...
Jan 30 08:18:03 X61T systemd[1]: ssh.service: Main process exited, code=exited,
Jan 30 08:18:03 X61T systemd[1]: Failed to start OpenBSD Secure Shell server.
Jan 30 08:18:03 X61T systemd[1]: ssh.service: Unit entered failed state.
Jan 30 08:18:03 X61T systemd[1]: ssh.service: Failed with result 'exit-code'.

systemd尝试提供一套集中化管理方案,从而统一打理全部内核及用户级进程的日志信息。这套系统能够收集并管理日志内容,而这也就是journal。journal的实现归功于journald守护进程,其负责处理由内核、initrd以及服务等产生的信息。

对比一下 init.d 和 systemd :

service daemon-----------------------> rsyslog -----------------------------------> /var/log

systemd ----------> systemd-journald ---> ram DB ----> rsyslog ----> /var/log

当 systemd 启动后,systemd-journald 也会立即启动。将日志存入RAM中,当rsyslog 启动后会读取该RAM并完成筛选分类写入目录 /var/log 。内核启动过程将消息写入到结构化的事件日志中(数据库),默认情况下重启后删除syslog 的信息也可以由 systemd-journald 转发到 rsyslog 中进一步处理默认情况下,systemd 的日志保存在 /run/log/journal 中,系统重启就会清除,这是RHEL7的新特性。通过新建 /var/log/journal 目录,日志会自动记录到这个目录中,并永久存储。rsyslog 服务随后根据优先级排列日志信息,将它们写入到 /var/log目录中永久保存常规操作systemd提供了自己的日志系统(logging system),称为 journal。使用 systemd 日志,无需额外安装日志服务(syslog)。

读取日志的命令:

# journalctl

重要:显示所有的日志信息,notice或warning以粗体显示,红色显示error级别以上的信息

显示最后行数的日志:

# journalctl -n

显示最详细信息:

# journalctl -f

提示:其实它很像tailf命令,默认显示十行。随着匹配日志的增长而持续输出。只显示错误、冲突和重要告警信息

# journalctl -p err..alert

提示:也可以使用数字表示哟。
显示指定单元的所有消息:

# journalctl -u netcfg

重要:一般 -u 参数是 systemctl status 调用的参数之一(journalctl -l 可查看所有)提示:如果希望显示 kernel 的信息需要使用 journalctl -k 进行内核环缓存消息查询。

显示从某个时间 ( 例如 20分钟前 ) 的消息:

# journalctl --since "20 min ago"

# journalctl --since today

# journalctl --until YYYY-MM-DD

显示本次启动后的所有日志:

# journalctl -b

不过,一般大家更关心的不是本次启动后的日志,而是上次启动时的(例如,刚刚系统崩溃了)。可以使用 -b 参数:

journalctl -b -0 显示本次启动的信息

journalctl -b -1 显示上次启动的信息

journalctl -b -2 显示上上次启动的信息

journalctl -b -2 只显示错误、冲突和重要告警信息

显示特定进程的所有消息:

# journalctl _PID=1

1. \_COMM 显示特定程序的所有消息,例如:``journalctl /usr/lib/systemd/systemd``
2. \_EXE 进程的可执行文件的路径
3. \_PID 进程的PID
4. \_UID 运行该进程用户的UID
5. _SYSTEMD_UNIT 启动该进程的 `systemd` 单元
提示:以上筛选条件可组合使用,例如:journalctl _SYSTEMD_UNIT=sshd.service _PID=1182

显示更多输出方案:

# journalctl -o short|short-iso|short-percise|short-monotonic|verbose|export|json|json-pretty|json-sse|cat

进入ssh debug模式

root@X61T:/etc/init.d# /usr/sbin/sshd -d

debug1: sshd version OpenSSH_7.4, OpenSSL 1.0.2l  25 May 2017
debug1: private host key #0: ssh-rsa SHA256:yXduj8mTB9Lte+8TNQZPaqHtphuCgTcR18BY9jhY7sY
debug1: private host key #1: ecdsa-sha2-nistp256 SHA256:kzdqml9P9ocCIKrNalil5lKOZtY9Eshrn6ntfFKEkFk
debug1: private host key #2: ssh-ed25519 SHA256:nAcGxV9POMZeJxyqOWVsWu1s/WrvQSyhNDj0sQa90KY
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-d'
debug1: Set /proc/self/oom_score_adj from 0 to -1000
debug1: Bind to port 22 on 0.0.0.0.
Bind to port 22 on 0.0.0.0 failed: Address already in use.
debug1: Bind to port 22 on ::.
Bind to port 22 on :: failed: Address already in use.
Cannot bind any address.

发现居然22端口被占用了
用netstat查出是谁在占用。
root@X61T:/etc/init.d# netstat -apn

列出所有端口 (包括监听和未监听的)
netstat -a                   列出所有端口
netstat -at                   列出所有tcp端口
netstat -au                  列出所有udp端口
列出所有处于监听状态的 Sockets
netstat -l              只显示监听端口
netstat -lt                  只列出所有监听 tcp 端口
netstat -lu                  只列出所有监听 udp 端口
netstat -lx              只列出所有监听 UNIX 端口
显示每个协议的统计信息
netstat -s                  显示所有端口的统计信息
netstat -st                  显示TCP端口的统计信息
netstat -su                  显示UDP端口的统计信息
在netstat输出中显示 PID 和进程名称
netstat –pt
命令如下:
netstat -pan | grep 5623
#其中5623位端口号
netstat 中参数选项
-a或--all:显示所有连线中的Socket;
-A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址;
-c或--continuous:持续列出网络状态;
-C或--cache:显示路由器配置的快取信息;
-e或--extend:显示网络其他相关信息;
-F或--fib:显示FIB;
-g或--groups:显示多重广播功能群组组员名单;
-h或--help:在线帮助;
-i或--interfaces:显示网络界面信息表单;
-l或--listening:显示监控中的服务器的Socket;
-M或--masquerade:显示伪装的网络连线;
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称;
-o或--timers:显示计时器;
-p或--programs:显示正在使用Socket的程序识别码和程序名称;
-r或--route:显示Routing Table;
-s或--statistice:显示网络工作信息统计表;
-t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
-v或--verbose:显示指令执行过程;
-V或--version:显示版本信息;
-w或--raw:显示RAW传输协议的连线状况;
-x或--unix:此参数的效果和指定"-A unix"参数相同;
--ip或--inet:此参数的效果和指定"-A inet"参数相同。

root@X61T:/etc/init.d# service rsync stop

root@X61T:/etc/init.d# /usr/sbin/sshd -d

debug1: sshd version OpenSSH_7.4, OpenSSL 1.0.2l  25 May 2017
debug1: private host key #0: ssh-rsa SHA256:yXduj8mTB9Lte+8TNQZPaqHtphuCgTcR18BY9jhY7sY
debug1: private host key #1: ecdsa-sha2-nistp256 SHA256:kzdqml9P9ocCIKrNalil5lKOZtY9Eshrn6ntfFKEkFk
debug1: private host key #2: ssh-ed25519 SHA256:nAcGxV9POMZeJxyqOWVsWu1s/WrvQSyhNDj0sQa90KY
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-d'
debug1: Set /proc/self/oom_score_adj from 0 to -1000
debug1: Bind to port 22 on 0.0.0.0.
Server listening on 0.0.0.0 port 22.
debug1: Bind to port 22 on ::.
Server listening on :: port 22.

root@X61T:/etc/init.d# service rsync stop

root@X61T:/etc/init.d# service ssh start

root@X61T:/etc/init.d# service rsync start

root@X61T:/home/liang# journalctl -u ssh.service

Jan 30 09:21:38 X61T systemd[1]: Starting OpenBSD Secure Shell server...
Jan 30 09:21:38 X61T sshd[6526]: Server listening on 0.0.0.0 port 22.
Jan 30 09:21:38 X61T sshd[6526]: Server listening on :: port 22.
Jan 30 09:21:38 X61T systemd[1]: Started OpenBSD Secure Shell server.

搞定。

下面的资料是为什么Rsync会占用22端口

留下来参考

https://mike-hostetler.com/rsync-non-standard-ssh-port/

https://www.kaijia.me/2012/10/rsync-use-non-standard-ssh-port-solved/

ssh无法启动 (code=exited, status=255)的更多相关文章

  1. CentOS7 启动docker.service失败(code=exited, status=1/FAILURE)

    启动报错 Job for docker.service failed because the control process exited with error code. See "sys ...

  2. centOS7 vsftp ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS) 启动失败问题?

    [root@localhost c]# systemctl status vsftpd.service ● vsftpd.service - Vsftpd ftp daemon Loaded: loa ...

  3. centOS 7一个解决“network.service: control process exited, code=exited status=1”方法

    今天早上2017-08-04,我打开虚拟机,使用远程工具xshell对虚拟机进行连接,我发现连接不上去,然后我ifconfig,发现找不到ens33了,就剩一个本地回环,看来是我的网络出现了问题,然后 ...

  4. code=exited,status=1/failure;failed to start LSB:Bring up/down networking

    环境: CentOS 7 vmware 12 操作: 复制可使用的vmware centOS 7系统至新环境 问题: 无法启动网络 查看“systemctl status network" ...

  5. vsftpd.service: Main process exited, code=exited, status=2/INVALIDARGUMENT和vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()错误的解决方法

    今天在配置VSFTPD过程中遇到两个错误 1是启动失败,通过 SERVICE VSFTPD STATUS 查看到报错 May 02 16:06:58 debian systemd[1]: Starti ...

  6. nginx.service: control process exited, code=exited status=1

    安装linux的宝塔面板,结果面板显示nginx和php已经运行了,但是机器系统上并没有运行.记录一次nginx报错,操作步骤看下代码: [root@localhost nginx]# systemc ...

  7. CenOS7.1 vncserver@:1.service: control process exited, code=exited status=2

    参考:http://www.cnblogs.com/gaohong/p/4829206.html 报错细节: vncserver@:1.service: control process exited, ...

  8. main process exited, code=exited, status=203/EXEC

    问题描述: Oct :: c_3. systemd[]: Started etcd. Oct :: c_3. systemd[]: Starting etcd... Oct :: c_3. syste ...

  9. (samba启动失败)smb.service: main process exited, code=exited, status=1/FAILURE

    按照指示,前往:journalctl -xe 没什么发现,搜的时候有人说也可以查看 journalctl -r 打出来之后我也看不出什么门道来 又看到有人说 smb 方面可以看看 testparm 我 ...

随机推荐

  1. 实现FTP+PAM+MySQL环境,批量配置虚拟用户

    实现FTP+PAM+MySQL环境,批量配置虚拟用户 搭建环境: CentOS6.5或CentOS6.7 [root@vhost3 ~]# uname -a Linux vhost3 2.6.32-5 ...

  2. MySQL数据库高级一:架构介绍

    两天半就可以 严禁使用 精通 在简历上 了解的越多,越比他人有优势 linux的mysql需要使用中文字符集那么就要修改配置文件 1.mysql的linux版 安装和卸载不说了 2.逻辑架构 总体概况 ...

  3. 消息中间件rabbitMQ

    1 为什么使用消息队列啊? 其实就是问问你消息队列都有哪些使用场景,然后你项目里具体是什么场景,说说你在这个场景里用消息队列是什么 面试官问你这个问题,期望的一个回答是说,你们公司有个什么业务场景,这 ...

  4. Vue3+Vite引入Echarts5.0图表库

    1 概述 环境Vue3+Vite,需要引入ECharts库. 2 尝试 目前ECharts已更新到5.0版本,在Vue中引入并不难,npm/cnpm安装后在需要的组件中引入: import echar ...

  5. linux 查看cpu型号、memory

    查看CPU信息(型号) [root@TX-220-60-211 supdev]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 40 In ...

  6. 【DataBase】SQL45 Training 45题训练

    视频地址: https://www.bilibili.com/video/BV1pp4y1Q7Yv 创建案例库: ------------创建数据库--------------- create dat ...

  7. 通过Dapr实现一个简单的基于.net的微服务电商系统(九)——一步一步教你如何撸Dapr之OAuth2授权

    Oauth2授权,熟悉微信开发的同学对这个东西应该不陌生吧.当我们的应用系统需要集成第三方授权时一般都会做oauth集成,今天就来看看在Dapr的语境下我们如何仅通过配置无需修改应用程序的方式让第三方 ...

  8. HTML5中meta属性的使用详解

    meta属性在HTML中占据了很重要的位置.如:针对搜索引擎的SEO,文档的字符编码,设置刷新缓存等.虽然一些网页可能没有使用meta,但是作为正规军,我们还是有必要了解一些meta的属性,并且能够熟 ...

  9. 【原创】Centos8安装ansible

    1.安装步骤 # 安装epel扩展源 dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rp ...

  10. POJ 2135 简单费用流

    题意:       题意是一个人他要从牧场1走到牧场n然后在走回来,每条路径只走一次,问全程的最短路径是多少. 思路:        这个题目挺简单的吧,首先要保证每条边只能走一次,然后还要要求费用最 ...