#!/bin/bash # SSH反向隧道设置脚本 echo "=== SSH反向隧道设置脚本 ===" # 1. 检查SSH客户端是否安装 echo "1. 检查SSH客户端..." if command -v ssh &> /dev/null; then echo "✓ SSH客户端已安装: $(which ssh)" ssh -V else echo "✗ SSH客户端未安装,开始安装..." # 检测Linux发行版 if [ -f /etc/redhat-release ]; then # CentOS/RHEL echo "检测到 CentOS/RHEL 系统" sudo yum install -y openssh-clients openssh-server elif [ -f /etc/debian_version ]; then # Debian/Ubuntu echo "检测到 Debian/Ubuntu 系统" sudo apt-get update sudo apt-get install -y openssh-client openssh-server elif [ -f /etc/arch-release ]; then # Arch Linux echo "检测到 Arch Linux 系统" sudo pacman -S --noconfirm openssh else echo "无法自动检测系统类型,请手动安装 openssh-client" exit 1 fi # 验证安装 if command -v ssh &> /dev/null; then echo "✓ SSH客户端安装成功" ssh -V else echo "✗ SSH客户端安装失败,请手动安装" exit 1 fi fi echo "" echo "2. 检查SSH服务是否运行..." if systemctl is-active --quiet sshd || systemctl is-active --quiet ssh; then echo "✓ SSH服务正在运行" else echo "⚠ SSH服务未运行,启动SSH服务..." sudo systemctl start sshd 2>/dev/null || sudo systemctl start ssh sudo systemctl enable sshd 2>/dev/null || sudo systemctl enable ssh fi echo "" echo "3. 生成SSH密钥(如果不存在)..." if [ ! -f ~/.ssh/id_rsa ]; then echo "生成SSH密钥..." ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -N "" echo "✓ SSH密钥已生成" else echo "✓ SSH密钥已存在" fi echo "" echo "4. 配置SSH密钥免密登录(可选)..." read -p "是否配置免密登录到阿里云服务器?(y/n): " setup_key if [ "$setup_key" = "y" ] || [ "$setup_key" = "Y" ]; then read -p "请输入阿里云服务器IP: " server_ip read -p "请输入阿里云服务器用户名(默认root): " server_user server_user=${server_user:-root} echo "复制SSH公钥到阿里云服务器..." ssh-copy-id -p 22 ${server_user}@${server_ip} if [ $? -eq 0 ]; then echo "✓ 免密登录配置成功" else echo "⚠ 免密登录配置失败,请手动配置或使用密码登录" fi fi echo "" echo "5. 测试SSH连接..." read -p "请输入阿里云服务器IP(用于测试连接): " test_ip read -p "请输入用户名(默认root): " test_user test_user=${test_user:-root} echo "测试连接到 ${test_user}@${test_ip}..." ssh -o ConnectTimeout=5 -p 22 ${test_user}@${test_ip} "echo '连接成功!'" if [ $? -eq 0 ]; then echo "✓ SSH连接测试成功" else echo "✗ SSH连接测试失败,请检查:" echo " - 网络连接是否正常" echo " - 阿里云服务器防火墙是否开放22端口" echo " - 用户名和密码是否正确" fi echo "" echo "=== 设置完成 ===" echo "" echo "使用方法:" echo " 手动连接: ssh -fN -R 2222:localhost:22 root@123.56.98.4 -p 22" echo "" echo " 或者使用自动重连脚本(见下方)"