目录
目录X
联系信息 首页 /正文内容

敲得ssh,但真正干活的却是 sshd

AI摘要(BLUF)
SSH(Secure Shell)和SSHD是Linux系统中一对核心的客户端与服务端程序。SSH用于客户端连接远程服务器,而SSHD则是服务器端守护进程,负责监听和处理SSH连接请求。当在服务器上执行ps aux | grep ssh命令时,会看到sshd进程,这是服务器端的SSH守护进程,它负责建立安全的远程连接。sshd: root@pts/0的显示表示root用户通过终端pts/0连接到服务器。两者职责相反但相互配合,共同实现安全的远程登录和文件传输功能。SSH协议通过加密技术确保网络通信的安全性,是Linux系统管理和远程运维的重要工具。在实际使用中,用户通过SSH客户端连接到运行着SSHD服务的服务器,实现安全的远程访问。理解这两个程序的区别和关系,对于Linux系统管理和网络安全具有重要意义。

服务器里执行了:

ps aux | grep ssh

想看一下 ssh 的相关进程,结果看到的,却不是 ssh

而是:

sshd

和:

sshd: root@pts/0

它们只差一个字母。

但职责,却完全相反。

原来 ssh 和 sshd,是 Linux 世界里最经典的一对客户端服务端

一、我们看到的 ssh,只是遥控器

当我们输入:

ssh root@1.2.3.4

本机做的事情是发起连接

ssh 负责的是:

  • 去连接远程服务器
  • 建立加密通道
  • 让你输入密码 / 使用密钥
  • 打开一个终端窗口

它的角色,更像是遥控器。

也就是说 ssh 是客户端,是主动发起连接的一方。

二、服务器里真正工作的,是 sshd

sshd 的全名叫 SSH Daemon(守护进程)

在 Linux 世界里,daemon 的意思是一直在后台运行的服务。

sshd 常年待在服务器里,默默做着这些事:

  • 监听 22 端口
  • 等待别人连接
  • 验证身份(密码 / 密钥)
  • 创建 shell
  • 维持你的会话

也就是说 sshd 才是那个真正干活的人。

三、一次 SSH 登录,真实发生了什么?

假设:

  • 你的电脑:192.168.1.10
  • 服务器:1.2.3.4

当你敲下:

ssh root@1.2.3.4

真实流程是这样的:

你(ssh)   ↓向服务器 22 端口发起连接   ↓服务器上的 sshd 收到请求   ↓sshd 验证你的身份   ↓sshd 创建一个 shell   ↓你拿到远程终端

一些人可能以为是 ssh 自己完成了一切。

但实际上,如果服务器上没有 sshd,你的 ssh 是连不上的。


四、为什么要搞两个程序?

因为它们干的不是同一件事,这是 Unix 的一种分工思维。

Unix 的设计哲学是:

把复杂系统拆成多个小组件,每个组件只做一件事。

所以:

  • ssh → 只负责发起连接
  • sshd → 只负责接受连接

它们分开,各自简单;组合起来,却很强大。
ssh 是我去连接别人sshd 是别人来连接我

或者更直白一点:你看到的是 ssh,但远端服务器里真正干活的是 sshd。


【打印正文】 发布时间:2026-05-26 09:37:35 浏览次数: 作者: 来源:本站原创