思路总结:
![[Docker]centos 官方镜像安装sshd服务](/uploadfile/2026/0616/bc938e0b2adbc3474215bb8d7ea8fafd.webp)
先快速梳理一下SSH服务的基本概念——它本质上就是Secure Shell的缩写,是一种加密的网络传输协议。SSH支持基于密钥和口令两种验证方式,整个传输、认证、连接三个层次都做了安全保证。理解这几点,后面操作起来心里就有底了。
认识SSH
- SSH服务其实是 Secure Shell 的缩写
- SSH服务支持基于密钥、口令两种方式进行验证
- SSH要求传输、认证、连接三层次保证安全
安装SSH
安装SSH服务主要涉及三个组件:openssh-server(核心服务)、openssl(安全通讯与身份识别)、passwd(用户密码管理)。不同Linux发行版命令略有差异,大致如下:
## redhat,fedora,centos等
yum install sshd 或
yum install openssh-server
## debian,ubuntu,linux mint等
apt-get install sshd 或
apt-get install openssh-server(由osc网友 火耳提供)
## 建议权限提升root用户操作(或sudo)
生成所需密钥
生成主机密钥是SSH服务正常运行的前提,直接执行以下命令即可完成密钥对创建:
ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''
启动服务
启动SSH服务时,建议使用nohup命令避免终端断开导致进程挂掉。同时别忘了设置开机自启:
# 启动服务 建议使用nohup执行,防止进程挂断
/usr/sbin/sshd -D
# 设置开机启动
echo "/usr/sbin/sshd -D" >> /etc/rc.local
这里需要特别注意:此时sshd并未注册为系统服务,因此通过service或systemctl可能无法正常管理它——毕竟很多Docker容器根本没有安装服务管理组件,这一点和传统虚拟机环境差异很大。
避坑指南
实际踩坑的点主要集中在权限和网络环境上。Docker容器内用户权限通常较低,即使你使用root登录,某些系统配置也可能无法修改,因为默认的Docker用户是外部的普通用户。创建容器时务必加上--privileged参数来提升权限:
docker run -t -i --privileged centos:latest
另外,容器内很可能无法联网安装软件包。这时候要么使用docker cp把离线包复制进去,要么在创建容器时通过-v映射磁盘目录来实现离线安装。提前做好这些准备,能省去不少折腾时间。
