OpenSSH安装(升级)
-
下载 OpenSSH 源码,从 OpenSSH 官方网站或其镜像站点下载 OpenSSH 9.9.1 的源码包。
wget <https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.9p1.tar.gz>
-
解压源码包
tar -xzf openssh-9.9p1.tar.gz
cd openssh-9.9p1
-
配置编译环境
./configure --prefix=/usr/local/openssh9.9 --sysconfdir=/etc/ssh --with-md5-passwords --with-privsep-path=/var/lib/sshd
这里解释一下常用的配置选项:
–prefix=/usr/local/openssh9.9:指定安装路径。
–sysconfdir=/etc/ssh:指定配置文件目录。
–with-md5-passwords:启用 MD5 密码支持(注意:MD5 已被认为是不安全的,生产环境中应避免使用)。
–with-privsep-path=/var/lib/sshd:指定特权分离路径。 -
编译源码并且安装
make && make install
-
配置 SSH 服务
安装完成后,需要配置 SSH 服务。创建必要的目录和文件:
sudo mkdir -p /var/lib/sshd
sudo touch /var/log/secure
sudo chown root:root /var/log/secure
sudo chmod 0600 /var/log/secure
-
编辑 SSH 配置文件
vi /etc/ssh/sshd_config
,确保它包含以下基本配置:Port 22 Protocol 2 PermitRootLogin yes PasswordAuthentication yes ChallengeResponseAuthentication no UsePAM yes X11Forwarding yes PrintMotd no AcceptEnv LANG LC_* Subsystem sftp /usr/local/openssh9.9/libexec/sftp-server
注意Subsystem为安装的openssh9.9的路径,一般需要改下
注意PermitRootLogin为是否允许root用户直接远程,不建议设置为yes,但是一般设置为yes更方便 -
启动 SSH 服务并设置为开机自启:
sudo /usr/local/openssh9.9/sbin/sshd -f /etc/ssh/sshd_config
如果出现:
error while loading shared libraries: libcrypto.so.3: cannot open shared object file: No such file or directory
则直接修改动态链接库配置文件vi /etc/ld.so.conf
,将openssl安装包中的链接路径放入即可:
也可使用find /usr -name "libcrypto.so*"
查看与该库相关的文件所在的文件夹,放入该文件夹路径也可行
例如/usr/local/src/openssl-3.3.1
放入末尾即可,随后进行保存文件,并执行ldconfig
使动态链接库实时生效 -
检查sshd服务的状态
sudo systemctl status sshd
,如果里面没有fail,代表正常,否则按照如下几点进行排查问题如果出现:
Failed to enable unit: Unit file sshd.service does not exist
,代表sshd.service未能创建成功
需要手动创建sshd.service
服务,vi /etc/systemd/system/sshd.service
,在该文件的填充内容如下[Unit] Description=OpenSSH server daemon After=network.target [Service] ExecStart=/usr/local/openssh9.9/sbin/sshd -D ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure [Install] WantedBy=multi-user.target
上面的ExecStart为sshd可执行文件的位置
创建或修改sshd.service文件后,需要重新加载系统守护进程并启动SSH服务
sudo systemctl daemon-reload
sudo systemctl start sshd
sudo systemctl enable sshd
sudo systemctl restart sshd
如果仍然启动不了,则可能是端口占用,需要杀死以前的远程端口,一般是22端口 使用
sudo netstat -tulnp | grep :22
查看PID
的具体数值,再使用kill -9 PID
杀死端口,再使用sudo systemctl restart sshd
重启sshd服务再次检查 SSH 服务状态
sudo systemctl status sshd
如果没有fail则代表正常最后使用
sshd -v
检查openssh的版本号与openssl的版本号是否是最新的
如果还是之间旧的版本号,说明以前的sshd和openssl没有被删除,直接使用which openssl
和which sshd
查看当前环境变量中储存的可执行文件路径是否正确,如果出来了路径且进去后使用./openssl version
或./sshd -v
出来的版本号不正确,则直接使用rm -rf openssl
或rm -rf sshd
删除openssl和sshd(一般都是sshd不对,删除sshd即可,openssl一般都是正确的版本)
注意先查询openssl的版本,看是否正确,正确后再进行查询sshd的版本是否正确
当可执行文件删除后再使用which openssl
或which sshd
提示查询不到路径时
则进行编辑~/.bashrc
或~/.zshrc
文件
将正确的最新的openssh9.9的安装路径放入配置文件:export PATH=$PATH:/usr/local/openssh9.9/sbin
最后保存配置文件并使用source ~/.bashrc
更新配置文件即可