安裝環境
系統版本: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