Files
chinese-family-tree-2/check-server.sh
T
freedakgmail 3b0d8255f6 0.0.8.1
2025-11-23 19:38:51 +08:00

131 lines
4.7 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# 服务器诊断脚本
SERVER_IP="115.190.235.230"
SERVER_PORT="8006"
SERVER_USER="root"
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
echo -e "${BLUE}========================================${NC}"
echo -e "${BLUE}服务器连接诊断工具${NC}"
echo -e "${BLUE}========================================${NC}"
# 1. 检查网络连通性
echo -e "\n${YELLOW}[1/6] 检查网络连通性...${NC}"
ping -c 3 $SERVER_IP > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo -e "${GREEN}✓ 服务器 ${SERVER_IP} 可以ping通${NC}"
else
echo -e "${RED}✗ 服务器 ${SERVER_IP} 无法ping通${NC}"
echo -e "${YELLOW} 可能原因:服务器禁用了ICMP或网络不通${NC}"
fi
# 2. 检查端口开放状态
echo -e "\n${YELLOW}[2/6] 检查SSH端口 ${SERVER_PORT}...${NC}"
# 尝试使用nc
if command -v nc &> /dev/null; then
timeout 5 nc -z $SERVER_IP $SERVER_PORT 2>/dev/null
if [ $? -eq 0 ]; then
echo -e "${GREEN}✓ 端口 ${SERVER_PORT} 开放${NC}"
else
echo -e "${RED}✗ 端口 ${SERVER_PORT} 无法访问${NC}"
echo -e "${YELLOW} 可能原因:${NC}"
echo -e " 1. 端口号错误"
echo -e " 2. 服务器防火墙阻止了该端口"
echo -e " 3. SSH服务未运行"
fi
else
echo -e "${YELLOW}⚠ nc命令未安装,跳过端口检查${NC}"
fi
# 3. 尝试SSH连接(显示详细信息)
echo -e "\n${YELLOW}[3/6] 尝试SSH连接(详细模式)...${NC}"
echo -e "${BLUE}执行命令: ssh -v -p ${SERVER_PORT} -o ConnectTimeout=10 ${SERVER_USER}@${SERVER_IP} 'echo test'${NC}"
echo -e "${YELLOW}----------------------------------------${NC}"
ssh -v -p $SERVER_PORT -o ConnectTimeout=10 $SERVER_USER@$SERVER_IP 'echo test' 2>&1 | head -20
SSH_RESULT=$?
echo -e "${YELLOW}----------------------------------------${NC}"
if [ $SSH_RESULT -eq 0 ]; then
echo -e "${GREEN}✓ SSH连接成功${NC}"
else
echo -e "${RED}✗ SSH连接失败(退出码: ${SSH_RESULT}${NC}"
fi
# 4. 检查SSH密钥
echo -e "\n${YELLOW}[4/6] 检查SSH密钥...${NC}"
if [ -f ~/.ssh/id_rsa ]; then
echo -e "${GREEN}✓ SSH私钥存在: ~/.ssh/id_rsa${NC}"
if [ -f ~/.ssh/id_rsa.pub ]; then
echo -e "${GREEN}✓ SSH公钥存在: ~/.ssh/id_rsa.pub${NC}"
echo -e "${BLUE}公钥内容:${NC}"
cat ~/.ssh/id_rsa.pub
fi
else
echo -e "${RED}✗ SSH密钥不存在${NC}"
fi
# 5. 检查SSH配置
echo -e "\n${YELLOW}[5/6] 检查本地SSH配置...${NC}"
if [ -f ~/.ssh/config ]; then
echo -e "${GREEN}✓ SSH配置文件存在${NC}"
if grep -q "$SERVER_IP" ~/.ssh/config; then
echo -e "${BLUE}相关配置:${NC}"
grep -A 5 "$SERVER_IP" ~/.ssh/config
fi
else
echo -e "${YELLOW}⚠ SSH配置文件不存在(这是正常的)${NC}"
fi
# 6. 提供解决方案
echo -e "\n${YELLOW}[6/6] 建议的解决方案...${NC}"
echo -e "${BLUE}========================================${NC}"
echo -e "${BLUE}如果连接失败,请尝试以下步骤:${NC}"
echo -e "${BLUE}========================================${NC}"
echo -e "\n${YELLOW}1. 确认服务器信息:${NC}"
echo -e " 服务器IP: ${SERVER_IP}"
echo -e " SSH端口: ${SERVER_PORT}"
echo -e " 用户名: ${SERVER_USER}"
echo -e " ${BLUE}如果信息有误,请修改 deploy.sh 文件${NC}"
echo -e "\n${YELLOW}2. 手动测试SSH连接:${NC}"
echo -e " ${BLUE}ssh -p ${SERVER_PORT} ${SERVER_USER}@${SERVER_IP}${NC}"
echo -e " 如果能成功连接,说明服务器配置正常"
echo -e "\n${YELLOW}3. 常见端口号:${NC}"
echo -e " - 默认SSH端口: 22"
echo -e " - 你配置的端口: ${SERVER_PORT}"
echo -e " ${BLUE}尝试: ssh -p 22 ${SERVER_USER}@${SERVER_IP}${NC}"
echo -e "\n${YELLOW}4. 检查服务器防火墙:${NC}"
echo -e " 登录服务器后执行:"
echo -e " ${BLUE}# Ubuntu/Debian${NC}"
echo -e " sudo ufw status"
echo -e " sudo ufw allow ${SERVER_PORT}/tcp"
echo -e " ${BLUE}# CentOS${NC}"
echo -e " sudo firewall-cmd --list-all"
echo -e " sudo firewall-cmd --permanent --add-port=${SERVER_PORT}/tcp"
echo -e " sudo firewall-cmd --reload"
echo -e "\n${YELLOW}5. 检查SSH服务状态:${NC}"
echo -e " 登录服务器后执行:"
echo -e " ${BLUE}sudo systemctl status sshd${NC}"
echo -e " ${BLUE}sudo systemctl restart sshd${NC}"
echo -e "\n${YELLOW}6. 如果使用云服务器:${NC}"
echo -e " - 检查云服务商的安全组规则"
echo -e " - 确保入站规则允许端口 ${SERVER_PORT}"
echo -e " - 确保源IP设置为 0.0.0.0/0 或你的本地IP"
echo -e "\n${BLUE}========================================${NC}"
echo -e "${GREEN}诊断完成!${NC}"
echo -e "${BLUE}========================================${NC}"