敲得ssh,但真正干活的却是 sshd
来源:本站原创
点击数: 次
发布时间:2026年05月26日
服务器里执行了:
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。
