一、检查系统是否安装 OpenSSH
在进行服务器配置和管理相关的操作时,我们常常需要确定系统是否已经安装了某些关键的服务和工具,OpenSSH 就是其中之一。它为我们提供了安全的远程登录和文件传输等重要功能。
- Ubuntu 系统:Ubuntu 作为一款广泛使用的 Linux 操作系统,我们可以使用以下命令查看是否安装了 OpenSSH。通过
dpkg --list
命令列出已安装的软件包信息,这个命令会展示系统中所有通过 dpkg 包管理系统安装的软件包及其相关信息。然后使用grep ssh
过滤出与 ssh 相关的内容,这样我们就能清晰地知道 OpenSSH 是否已经安装在系统中了。
dpkg --list | grep ssh
- RedHat/CentOS 系统:在 RedHat 或 CentOS 系统中,其软件包管理机制与 Ubuntu 有所不同。这里我们通过
rpm -qa
命令列出所有已安装的软件包,rpm
是 Red Hat Package Manager 的缩写,-qa
选项表示查询所有已安装的软件包。再结合grep ssh
来查看是否安装了与 ssh 相关的软件包,从而确定 OpenSSH 的安装情况。
rpm -qa | grep ssh
二、修改 ssh 服务的 sshd_config 文件,允许 root 账户以密码验证身份登录
在某些特定的服务器环境配置需求下,可能需要允许 root 账户通过密码验证的方式登录,这就需要对 ssh 服务的配置文件 sshd_config
进行相应的修改。以下是详细的步骤:
- 删除 sshd_config 中包含“PermitRootLogin”的行:
sshd_config
文件中的每一行配置都对 ssh 服务的行为有着重要影响。当我们需要重新设置PermitRootLogin
相关的配置时,首先要清除原有的配置项。使用sed
命令的-i
选项(表示直接在原文件修改),通过/^PermitRootLogin/d
这个模式匹配以“PermitRootLogin”开头的行并删除。这样可以避免之前的配置对新配置产生干扰。
sed -i "/^PermitRootLogin/d" /etc/ssh/sshd_config
- 将“PermitRootLogin yes”添加到 sshd_config 中:
在删除了旧的配置行之后,我们需要添加新的配置。使用echo
命令将“PermitRootLogin yes”内容追加到/etc/ssh/sshd_config
文件中。这一行配置的作用是允许 root 用户登录,“yes”表示启用该功能。
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
- 删除 sshd_config 中包含“PasswordAuthentication”的行:
与处理PermitRootLogin
类似,对于PasswordAuthentication
的配置,我们首先要清理原有的相关配置行。同样使用sed
命令,-i
选项直接修改文件,/^PasswordAuthentication/d
模式匹配以“PasswordAuthentication”开头的行并删除。这一步操作是为后续准确设置密码认证相关的配置做准备。
sed -i "/^PasswordAuthentication/d" /etc/ssh/sshd_config
- 将“PasswordAuthentication yes”添加到 sshd_config 中:
利用echo
命令将“PasswordAuthentication yes”追加到/etc/ssh/sshd_config
文件。这表示启用密码认证功能,使得用户可以使用密码进行登录。
echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
- 设置 ssh 服务开机自启:
在服务器环境中,为了确保 ssh 服务在系统每次启动时都能自动运行,我们使用systemctl
命令的enable
选项来设置 sshd.service 在开机时自动启动。这样可以避免因服务器重启而导致 ssh 服务未启动,影响远程管理的情况发生。
systemctl enable sshd.service
- 重启 ssh 服务以应用更改:
对sshd_config
文件进行了一系列修改后,需要重启 ssh 服务来使这些配置更改生效。通过systemctl restart sshd.service
命令重启 ssh 服务,这样新的配置参数就会被 ssh 服务加载并应用。
systemctl restart sshd.service
- 查看 ssh 服务运行状态或查找正在运行的进程中是否有包含“ssh”的进程:
- 查看 ssh 服务运行状态:使用
systemctl status sshd.service
命令可以获取 ssh 服务的详细运行状态信息,包括是否正在运行、启动时间、是否有错误等。这有助于我们在配置完成后确认 ssh 服务是否正常运行。 - 查找包含“ssh”的进程:使用
ps -e | grep ssh
命令可以在系统的进程列表中查找包含“ssh”关键字的进程。这可以从另一个角度来确认 ssh 相关的进程是否在运行,对于排查问题和确认配置的有效性也有一定的帮助。
- 查看 ssh 服务运行状态:使用
systemctl status sshd.service
ps -e | grep ssh