1. Debian SSH 设置基础准备
在开始 Debian 系统的 SSH 设置之前,确保你的 Debian 系统已经安装并正常启动。SSH 服务默认在 Debian 系统中是安装的,但如果你需要手动安装或重新配置,请先确保系统已经更新到最新状态。以下是准备工作的重要步骤。
更新系统
打开终端,首先运行以下命令来更新你的 Debian 系统。
sudo apt update
sudo apt upgrade -y
检查 SSH 服务状态
确认 SSH 服务是否正在运行,使用以下命令。
sudo systemctl status sshd
如果服务没有运行,可以使用以下命令启动它。
sudo systemctl start sshd
并确保服务在系统启动时自动启动。
sudo systemctl enable sshd
2. 修改 SSH 配置文件
SSH 的配置文件位于 /etc/ssh/sshd_config,这个文件控制着 SSH 服务器的各种行为。在进行任何修改之前,强烈建议先备份原文件。
备份配置文件
使用以下命令备份 sshd_config 文件。
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
编辑配置文件
使用你喜欢的文本编辑器(如 nano 或 vim)打开配置文件进行编辑。
sudo nano /etc/ssh/sshd_config
重要配置项修改
以下是一些常见的配置项修改,你可以根据需要进行调整。
Port 修改
默认 SSH 端口是 22,出于安全考虑,建议修改为其他端口。
找到 Port 22
这一行,修改为你想要的端口号,例如 2222。
Port 2222
PermitRootLogin 修改
为了安全起见,不建议允许 root 用户通过 SSH 登录。
找到 PermitRootLogin yes
这一行,修改为。
PermitRootLogin no
UsePAM 修改
在某些情况下,禁用 PAM 可以避免一些认证问题。
找到 UsePAM yes
这一行,修改为。
UsePAM no
保存并关闭文件,然后重启 SSH 服务使配置生效。
sudo systemctl restart sshd
3. 生成 SSH 密钥对
为了提高 SSH 登录的安全性,推荐使用密钥对代替密码认证。以下是生成 SSH 密钥对的步骤。
生成密钥对
在本地机器上打开终端,运行以下命令生成 RSA 密钥对。
ssh-keygen -t rsa -b 4096
系统会提示你输入文件保存位置和 passphrase(可选)。直接按回车键使用默认设置即可。
复制公钥到服务器
使用以下命令将生成的公钥复制到 Debian 服务器的授权用户目录下的 .ssh 文件夹中。
ssh-copy-id user@your_server_ip
将 user 替换为你的 Debian 服务器上的用户名,your_server_ip 替换为服务器的 IP 地址。系统会提示你输入服务器上的密码。
4. SSH 连接测试
完成上述设置后,测试 SSH 连接是否正常。
使用密钥登录
在本地终端运行以下命令,尝试使用密钥登录服务器。
ssh -i /path/to/your_private_key user@your_server_ip -p your_port
将 /path/to/your_private_key 替换为你的私钥文件路径,user 替换为服务器上的用户名,your_server_ip 替换为服务器的 IP 地址,your_port 替换为你之前设置的 SSH 端口号。
如果一切配置正确,你应该能够无密码登录服务器。
5. 常见问题解答
Q1: 如何解决 SSH 连接时提示 “Connection timed out” 的错误?
A1: 这个错误通常是由于防火墙阻止了 SSH 端口。检查你的防火墙设置,确保 SSH 端口(默认 22 或你设置的端口)是开放的。如果你使用的是 ufw,可以使用以下命令开放端口。
sudo ufw allow ssh
sudo ufw allow 2222
将 2222 替换为你设置的 SSH 端口号。
Q2: 如何解决 SSH 连接时提示 “Permission denied (publickey)” 的错误?
A2: 这个错误通常是因为公钥没有正确添加到服务器的授权文件中。确保你的公钥已经添加到 /home/user/.ssh/authorized_keys 文件中,并且该文件的权限设置为 600。
sudo chmod 600 /home/user/.ssh/authorized_keys
将 user 替换为你的服务器用户名。
Q3: 如何确保 SSH 连接的安全性?
A3: 为了确保 SSH 连接的安全性,建议采取以下措施:
– 修改默认 SSH 端口,避免被扫描。
– 禁止 root 用户通过 SSH 登录。
– 使用密钥对代替密码认证。
– 定期更新系统和 SSH 服务。
– 使用防火墙限制 SSH 访问。