安装环境
系统版本:Centos7 mini
安装步骤
- 依赖包安装
- 卸载原有openssh
- 下载openssh编译包
- 编译安装openssh
- 修改配置
- 设置openssh自启
安装操作
# 安装依赖包,因此系统最小化安装所以我就一股脑的将开发套件都给装上了
yum groupinstall "Development Tools" -y
#如果不想一股脑把整个套件安装上的可以使用下面的命令
#yum install openssl-devel zlib-devel perl gcc pam-devel
# 备份原来ssh的配置,备用
cp -r /etc/sysconfig/sshd /etc/sysconfig/sshd.bak
cp -r /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service.bak
cp -r /usr/lib/systemd/system/sshd.socket /usr/lib/systemd/system/sshd.socket.bak
cp -r /usr/lib/systemd/system/sshd@.service /usr/lib/systemd/system/sshd@.service.bak
cp -r /usr/lib/systemd/system/sshd-keygen.service /usr/lib/systemd/system/sshd-keygen.service.bak
cp -r /etc/ssh /etc/ssh.bak
# 卸载系统预装的openssh,先查询,然后卸载
rpm -qa | grep openssl
openssh-7.4p1-21.el7.x86_64
openssh-clients-7.4p1-21.el7.x86_64
openssh-server-7.4p1-21.el7.x86_64
yum remove openssh-clients openssh-server openssh
# 下载openssh安装包
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.6p1.tar.gz
# 删除原有配置文件,上面已经备份了所以放心上,建议采用mv命令
mv /etc/ssh /tmp
# 解压压缩包
tar xvf openssh-8.6p1.tar.gz
# 编译安装
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-zlib --with-md5-passwords --with-pam --with-ssl-engine
make && make install
# 创建软链接
ln -s /usr/local/openssh/sbin/sshd /sbin/sshd
ln -s /usr/local/openssh/bin/ssh /usr/bin/ssh
ln -s /usr/local/openssh/bin/ssh-add /usr/bin/ssh-add
ln -s /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
ln -s /usr/local/openssh/bin/ssh-keyscan /usr/bin/ssh-keyscan
# 恢复刚刚备份的配置文件
mv /etc/sysconfig/sshd.bak /etc/sysconfig/sshd
mv /usr/lib/systemd/system/sshd.service.bak /usr/lib/systemd/system/sshd.service
mv /usr/lib/systemd/system/sshd.socket.bak /usr/lib/systemd/system/sshd.socket
mv /usr/lib/systemd/system/sshd@.service.bak /usr/lib/systemd/system/sshd@.service
mv /usr/lib/systemd/system/sshd-keygen.service.bak /usr/lib/systemd/system/sshd-keygen.service
# 检查现在的ssh版本
ssh -V
# 修改默认配置,允许root登录
vi /etc/ssh/sshd_config
#将 #PermitRootLogin prohibit-password 修改为 PermitRootLogin yes
# 将sshd服务设为开机启动
chkconfig sshd on
安装问题
问题描述1
在使用systemctl start sshd 命令启动sshd服务会卡住,过一会显示启动超时,查询状态发现sshd服务启动失败。
但是,通过源码包自带的sshd.init 脚本文件可以正常的管理sshd服务的启停。
解决方法1
# 将源码安装包中的opensshd.init文件复制到/etc/init.d/目录下
cp opensshd.init /etc/init.d/sshd.init
# 授予可执行权限
chmod +x /etc/init.d/sshd.init
# 然后修改sshd.service管理配置文件
vim /usr/lib/systemd/system/sshd.service
#如果里面有内容的那将内容清空,没有的直接附上下面的配置即可
[Unit]
Documentation=man:systemd-sysv-generator(8)
SourcePath=/etc/rc.d/init.d/sshd.init
Description=SYSV: OpenSSH server daemon
[Service]
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=no
PIDFile=/var/run/sshd.pid
ExecStart=/etc/rc.d/init.d/sshd.init start
ExecStop=/etc/rc.d/init.d/sshd.init stop
ExecReload=/etc/rc.d/init.d/sshd.init reload
#保存退出,然后运行下面的命令
systemctl daemon-reload
systemctl restart sshd
问题描述2
在升级openssh编译报错“configure: error: *** working libcrypto not found, check config.log”
解决方法2
# 出现上面的报错,是因为缺少openssl-devel包或者libcrypto相关库不正确,我们直接安装openssl-devel即可解决问题
yum install -y openssl-devel