1. SSH简介
SSH,全称Secure Shell,是一种加密网络协议,用于在不安全的网络中安全地运行网络服务。它可替代不安全的 telnet、rlogin、rsh 等远程服务,并为远程登录提供了安全的加密通信功能。
SSH 可以认证用户身份,保护数据传输的安全性,还可以通过隧道(tunnel)技术实现端口转发、数据加密等功能。
SSH 服务基于客户端-服务器架构,客户端通过 SSH 协议连接到服务器,并在服务器上执行相应的任务。
2. SSH安全问题
虽然 SSH 是一种加密协议,但在配置不当的情况下,仍然可能存在安全隐患。比如默认的 SSH 配置使用密码认证方式,而且密码被存储在服务器上的/etc/shadow 文件中,如果攻击者获取了这个文件,就可以对 SSH 账户进行密码破解攻击
因此,为了提高 SSH 的安全性,可以采用以下措施:
2.1. 禁止root用户远程登录SSH
因为 root 用户拥有最高权限,如果其密码泄露或被攻击者破解,将对服务器造成极大风险。因此,禁止 root 用户远程登录 SSH 是一种常用的安全措施。
具体实现方法是编辑 SSH 配置文件 /etc/ssh/sshd_config,在其中添加下面的一行配置:
PermitRootLogin no
2.2. 修改SSH默认端口号
攻击者一般都会扫描常用的端口号,比如 SSH 的默认端口号是22。如果服务器还使用这个默认端口号,将更容易遭受攻击。
因此,修改 SSH 的默认端口号也是一种常用的安全措施。可以通过编辑 SSH 配置文件 /etc/ssh/sshd_config,并修改其中的端口号。
# 原端口号
Port 22
# 修改后的端口号
Port 2222
2.3. 修改SSH密码
SSH 账户使用密码认证方式,因此密码的安全性至关重要。如果使用过于简单的密码,或者多个账户共用同一密码,就容易造成安全漏洞。
因此,定期修改 SSH 账户的密码是一种必要的安全措施。下面将介绍如何修改 SSH 账户的密码。
3. 修改SSH密码
修改 SSH 账户的密码有两种方式,一种是使用 passwd 命令,另一种是使用 SSH 配置工具 ssh-keygen。下面将分别进行介绍。
3.1. 使用passwd命令
passwd 命令是 Linux 系统中常用的修改用户密码的命令,它同样可用于修改 SSH 账户的密码。
使用 passwd 命令修改 SSH 账户的密码,执行以下步骤:
登录到服务器上
执行passwd命令,按照提示输入原密码和新密码
# 修改SSH账户的密码
$ sudo passwd username
需要注意的是,密码应该足够复杂,建议使用不少于8位、包含大小写字母、数字和特殊字符的组合密码。
3.2. 使用ssh-keygen工具
ssh-keygen 工具可用于生成 SSH 密钥对,并将公钥添加到远程服务器上,从而实现无密码登录。
当然,如果你只是想修改 SSH 账户的密码,可以直接跳过这一节。
使用 ssh-keygen 工具生成 SSH 密钥对,执行以下步骤:
在本地机上执行 ssh-keygen 命令,生成 RSA 密钥对
将公钥添加到远程服务器上的 ~/.ssh/authorized_keys 文件中
# 生成 RSA 密钥对(默认生成 ~/.ssh/id_rsa 和 ~/.ssh/id_rsa.pub 两个文件)
$ ssh-keygen -t rsa -b 4096
# 将公钥添加到远程服务器的 authorized_keys 文件中
$ ssh-copy-id user@server
# 或者手动复制
$ cat ~/.ssh/id_rsa.pub | ssh user@server 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'
4. 总结
SSH 是一种加密网络协议,可用于在不安全的网络中安全地运行网络服务。为了提高 SSH 的安全性,我们可以采取一些措施,包括禁止 root 用户远程登录 SSH、修改 SSH 的默认端口号以及修改 SSH 账户的密码等。在具体操作中,可以使用 passwd 命令或者 ssh-keygen 工具来修改 SSH 账户的密码。