sshd
是 OpenSSH 的守护进程,用于处理来自客户端的 SSH 连接。它运行于服务器上,并通过 TCP 协议监听特定端口(默认为 22)。当有连接请求时,sshd
将创建一个子进程来处理该连接,从而允许用户进行安全登录。
安装与配置
安装
大多数 Linux 发行版默认已经安装了 OpenSSH。如果需要重新安装或更新,可以使用包管理器进行操作:
Debian/Ubuntu:
sudo apt-get update sudo apt-get install openssh-server
CentOS/RHEL:
sudo yum install openssh-server
配置文件
sshd
的主要配置文件位于 /etc/ssh/sshd_config
。编辑这个文件可以更改 sshd
的行为。常见的配置项包括:
- Port: 指定
sshd
监听的端口号。 - ListenAddress: 指定
sshd
应该监听的 IP 地址。 - PermitRootLogin: 控制是否允许 root 用户登录。
- PasswordAuthentication: 控制是否允许基于密码的认证。
- PubkeyAuthentication: 控制是否允许基于公钥的认证。
- AuthorizedKeysFile: 指定存放公钥的文件路径。
重启服务
修改完配置文件后,需要重启 sshd
服务以使更改生效:
sudo systemctl restart sshd
或者对于旧版本的系统:
sudo service ssh restart
启动与停止
启动
启动 sshd
服务可以使用以下命令:
sudo systemctl start sshd
停止
停止 sshd
服务可以使用以下命令:
sudo systemctl stop sshd
开机自启
确保 sshd
在系统启动时自动启动:
sudo systemctl enable sshd
检查状态
查看 sshd
服务的状态:
sudo systemctl status sshd
查看日志
查看 sshd
的日志信息可以帮助诊断问题:
sudo journalctl -u sshd
或者查看传统的日志文件:
sudo tail -f /var/log/auth.log
安全性设置
为了提高安全性,可以采取以下措施:
- 限制访问: 使用防火墙规则限制对
sshd
端口的访问。 - 禁用密码认证: 只允许基于密钥的身份验证。
- 禁用 root 登录: 防止攻击者直接通过 root 用户登录。
- 定期更新: 保持 OpenSSH 版本为最新,修复已知的安全漏洞。
使用密钥认证
生成密钥对并将其公钥添加到服务器上的 ~/.ssh/authorized_keys
文件中,然后在 sshd_config
中设置 PubkeyAuthentication yes
。
示例配置
下面是一个示例配置文件片段,展示了如何禁止密码认证和 root 登录:
# /etc/ssh/sshd_config PasswordAuthentication no PermitRootLogin no PubkeyAuthentication yes
常见问题与故障排除
无法连接
如果无法从客户端连接到服务器,请检查以下事项:
- 确认
sshd
正在运行。 - 检查防火墙设置。
- 确保客户端和服务器之间的网络连接正常。
- 查看服务器的日志文件以获取更多信息。
认证失败
如果认证失败,请检查:
- 用户名和密码是否正确。
- 公钥是否已正确添加到服务器。
sshd_config
文件中的认证设置。
端口冲突
如果 sshd
无法启动,可能是因为其他服务占用了默认端口(22)。可以通过以下命令检查端口占用情况:
sudo lsof -i :22
找到占用端口的进程并终止它,或者修改 sshd_config
中的端口号。
SELinux 设置
在某些环境中,SELinux 可能会阻止 sshd
的正常运行。请确保 SELinux 设置正确:
sudo setenforce 0 # 临时关闭 SELinux
或者编辑 /etc/selinux/config
文件永久更改设置。
以上是关于 sshd
命令的详细介绍,涵盖了安装、配置、启动、停止及常见问题的解决方法。希望这些信息对你有所帮助!