一键更改root密码并开启远程
本文最后更新于 2025-01-11,文章内容可能已经过时。
一键更改root密码并开启远程
现已支持
- Ubuntu 和 Debian 系列(包括 Linux Mint、Pop!_OS、Kali 等);
- CentOS、CentOS Stream 和 RHEL 系列(包括 Fedora、Rocky、AlmaLinux);
- 轻量级发行版(如 Alpine 和 Arch 系列);
我提供了一键脚本,如果您不想继续看下去
curl -sSL http://sudo.6wd.cn/setup-ssh.sh -o setup-ssh.sh && bash setup-ssh.sh
我们还提供了Linux工具
脚本内容 (setup-ssh.sh)
若没有提供密码,则使用默认密码 Suki520.
。
#!/bin/bash
# 脚本版本号
SCRIPT_VERSION="2.1.0"
# 设置默认密码
DEFAULT_PASSWORD="Suki520."
# 颜色设置
RED='\033[1;31m' # 明亮的红色
GREEN='\033[1;32m' # 明亮的绿色
YELLOW='\033[1;33m' # 明亮的黄色
BLUE='\033[1;34m' # 明亮的蓝色
CYAN='\033[1;36m' # 明亮的青色
MAGENTA='\033[1;35m' # 明亮的品红色
NC='\033[0m' # 无颜色
# 打印脚本版本号
echo -e "${CYAN}==============================================${NC}"
echo -e "${MAGENTA} 脚本版本: $SCRIPT_VERSION ${NC}"
echo -e "${CYAN}==============================================${NC}"
# 检查是否以 root 身份运行
if [ "$(id -u)" -ne 0 ]; then
echo -e "${RED}请以超级用户(root)身份运行此脚本。${NC}"
exit 1
fi
# 检测系统信息
OS=$(cat /etc/os-release | grep "^NAME=" | cut -d= -f2 | tr -d '"')
VERSION=$(cat /etc/os-release | grep "^VERSION=" | cut -d= -f2 | tr -d '"')
# 输出系统信息
echo -e "${BLUE}检测到的系统: $OS${NC}"
echo -e "${BLUE}系统版本: $VERSION${NC}"
# 根据不同的系统类型执行相应的命令
if [[ "$OS" == "Ubuntu" || "$OS" == "Debian" || "$OS" == "Linux Mint" || "$OS" == "Pop!_OS" || "$OS" == "Kali" ]]; then
echo -e "${GREEN}配置 Ubuntu/Debian 系统的 SSH 设置...${NC}"
# 备份原配置文件
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
echo -e "${GREEN}已备份原 SSH 配置文件为 /etc/ssh/sshd_config.bak${NC}"
# 修改 SSH 配置,允许 root 登录
sudo sed -i 's/^#*PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
sudo sed -i 's/^#*PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config
# 重启 SSH 服务
sudo systemctl restart ssh
elif [[ "$OS" == "CentOS Stream" || "$OS" == "CentOS" || "$OS" == "RHEL" || "$OS" == "Fedora" || "$OS" == "Rocky" || "$OS" == "AlmaLinux" ]]; then
echo -e "${GREEN}配置 CentOS/RHEL 系统的 SSH 设置...${NC}"
# 备份原配置文件
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
echo -e "${GREEN}已备份原 SSH 配置文件为 /etc/ssh/sshd_config.bak${NC}"
# 修改 SSH 配置,允许 root 登录
sudo sed -i 's/^#*PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
sudo sed -i 's/^#*PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config
# CentOS Stream / RHEL 9 可能使用 systemd 重启 sshd 服务
sudo systemctl restart sshd
elif [[ "$OS" == "Alpine" || "$OS" == "Arch Linux" || "$OS" == "Manjaro" ]]; then
echo -e "${GREEN}配置 Alpine/Arch 系统的 SSH 设置...${NC}"
# 备份原配置文件
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
echo -e "${GREEN}已备份原 SSH 配置文件为 /etc/ssh/sshd_config.bak${NC}"
# 修改 SSH 配置,允许 root 登录
sudo sed -i 's/^#*PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
sudo sed -i 's/^#*PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config
# 重启 SSH 服务
sudo systemctl restart sshd
else
echo -e "${RED}不支持的系统类型: $OS${NC}"
exit 1
fi
# 检查配置是否生效
if ! grep -q "^PermitRootLogin yes" /etc/ssh/sshd_config || ! grep -q "^PasswordAuthentication yes" /etc/ssh/sshd_config; then
echo -e "${RED}SSH 配置修改失败,请检查 /etc/ssh/sshd_config 文件。${NC}"
exit 1
fi
# 提示用户输入新密码,并允许输入显示
echo -n -e "${YELLOW}请输入新的 root 密码(默认密码为 ($DEFAULT_PASSWORD),直接按 Enter 使用默认密码):${NC}"
read -e NEW_PASSWORD # 使用 -e 选项允许命令行编辑和显示输入内容
# 如果用户没有输入密码,则使用默认密码
if [ -z "$NEW_PASSWORD" ]; then
NEW_PASSWORD=$DEFAULT_PASSWORD
fi
# 修改 root 用户密码
echo "root:$NEW_PASSWORD" | sudo chpasswd
# 获取内网 IP 地址
INTERNAL_IP=$(hostname -I | awk '{print $1}')
# 获取外网 IP 地址(使用 ifconfig.me 或其他外部 API)
EXTERNAL_IP=$(curl -s https://ifconfig.me)
if [ -z "$EXTERNAL_IP" ]; then
echo -e "${RED}无法获取外网 IP 地址,可能是网络问题!${NC}"
EXTERNAL_IP="无法获取"
fi
# 输出内网和外网 IP 地址
echo -e "\n${CYAN}==============================================${NC}"
echo -e "${MAGENTA} SSH 配置已更新 ${NC}"
echo -e "${CYAN}==============================================${NC}"
echo -e "${YELLOW}您可以使用以下命令连接到服务器:${NC}"
echo -e "${BLUE}ssh root@$INTERNAL_IP -p 22${NC} # 内网 IP 地址"
echo -e "${BLUE}ssh root@$EXTERNAL_IP -p 22${NC} # 外网 IP 地址"
echo -e "${YELLOW}密码:$NEW_PASSWORD${NC}"
echo -e "${CYAN}==============================================${NC}"
使用方法
- 将脚本上传到服务器(与之前相同):
scp setup-ssh.sh username@your_server_ip:/var/www/html/
- 设置脚本的执行权限:
ssh username@your_server_ip
sudo chmod +x /var/www/html/setup-ssh.sh
一键命令示例
curl -sSL http://your_server_ip/setup-ssh.sh -o setup-ssh.sh && bash setup-ssh.sh
安全提示
- 默认密码:使用默认密码可能带来安全隐患,建议在生产环境中始终使用强密码。
- HTTPS:如果可能,使用 HTTPS 来保护传输中的数据。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,完整转载请注明来自 枫の屋
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果