XIKEW.COM - 开发日志 - Debian12 添加代理账号 - 开发日志,代理,VPN,SSH - 从安全性考虑服务器的root账号用于SSH代理,是非常不合适的,所以我们会创建一个专门用于代理转发用的账号

Debian12 添加代理账号
SSH VPN 9/11/2025 5:05:05 PM 阅读:0

从安全性考虑服务器的root账号用于SSH代理,是非常不合适的,所以我们会创建一个专门用于代理转发用的账号 关键字:代理,VPN,SSH

Debian服务器

因为Debian比较轻,甚至有一些免费的服务器可以白嫖,比如这篇文章 白嫖海外服务器

一、前提条件

  1. 已安装 SSH 服务(Debian 12 默认可能未预装,需先安装):
    sudo apt update && sudo apt install openssh-server -y
    
  2. 拥有 root 权限或可使用 sudo 的管理员账号。

二、步骤1:创建“无登录权限”的系统账号

创建一个专用账号(例如命名为 tuser),并配置以下限制:

  • 禁止交互式登录(指定 nologin 为登录shell);
  • 无需家目录(或创建极简家目录,避免冗余文件);
  • 属于系统账号(UID < 1000,避免与普通用户混淆)。

执行以下命令创建账号:

sudo useradd -r -m -d /home/tuser -s /usr/sbin/nologin tuser
  • 参数说明:
    • -r:创建系统账号(UID 自动分配 < 1000);
    • -m -d /home/tuser:创建家目录(若无需家目录,可去掉 -m);
    • -s /usr/sbin/nologin:指定登录shell为 nologin(禁止交互式登录,尝试登录时会提示“此账号无法登录”)。

三、步骤2:设置账号密码(用于SSH认证)

虽然账号无法交互式登录,但 SSH 动态转发需要验证身份(密码或密钥),因此需为 tuser 设置密码:

sudo passwd tuser

按提示输入密码(建议设置复杂密码,避免泄露),并牢记该密码(后续客户端连接SOCKS代理需使用)。

四、步骤3:配置 SSHD(允许SOCKS代理,禁止登录)

SSH 服务的配置文件为 /etc/ssh/sshd_config,需修改此文件以:

  • 允许 tuser 使用 SSH 动态端口转发(SOCKS代理);
  • 严格禁止 tuser 进行交互式登录(即使意外启用shell也无法登录)。

4.1 备份原始配置文件(避免改错无法恢复)

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

4.2 编辑 SSHD 配置文件

使用 nanovim 打开配置文件:

sudo nano /etc/ssh/sshd_config

在文件末尾添加以下内容(针对 tuser 的专属限制):

# 仅允许 tuser 使用 SSH 动态端口转发(SOCKS代理),禁止其他所有操作
Match User tuser
    # 禁止交互式登录(即使shell被修改,也无法获取交互终端)
    PermitTTY no
    # 允许动态端口转发(核心:开启SOCKS代理功能)
    AllowTcpForwarding yes
    # 仅允许动态转发(禁止本地端口转发和远程端口转发,进一步限制权限)
    AllowStreamLocalForwarding no
    # 禁止 X11 转发(避免图形界面登录)
    X11Forwarding no
    # 禁止 agent 转发(避免SSH密钥泄露风险)
    AllowAgentForwarding no
    # 指定端口
    Port 2222
  • 关键逻辑:Match User tuser 表示以下配置仅对 tuser 生效,不影响其他账号;AllowTcpForwarding yes 是开启SOCKS代理的核心,其他 no 选项均为限制权限,确保账号仅能用于代理。

4.3 验证配置文件合法性

修改后需验证配置是否正确,避免 SSH 服务启动失败:

sudo sshd -t

若执行后无任何输出,说明配置合法;若有错误提示,需根据提示修正(例如语法错误、参数冲突)。

4.4 重启 SSH 服务(应用配置)

sudo systemctl restart sshd

确认服务状态(确保重启成功):

sudo systemctl status sshd

输出中显示 active (running) 即表示服务正常。

五、步骤4:测试 SOCKS 代理(客户端验证)

在需要使用代理的设备(如本地电脑、手机)上,通过 SSH 客户端连接 Debian 12 服务器,建立 SOCKS 代理。以下以 Linux/macOS 终端Windows PowerShell 为例:

5.1 Linux/macOS 终端

执行以下命令,通过 tuser 建立 SOCKS 5 代理:

ssh -D 1080 -N -f tuser@你的Debian服务器IP
  • 参数说明:
    • -D 1080:指定本地 SOCKS 代理端口为 1080(可自定义,如 1081、8080,需确保本地端口未被占用);
    • -N:不执行远程命令(仅建立转发,符合我们“禁止命令执行”的配置);
    • -f:后台运行(执行后终端可继续使用,无需保持窗口打开);
    • tuser@你的Debian服务器IP:目标服务器的账号和IP(例如 tuser@192.168.1.100)。

执行后会提示输入 tuser 的密码,输入正确后代理即建立。

5.2 Windows PowerShell

Windows 10/11 自带 OpenSSH 客户端,可直接在 PowerShell 中执行类似命令:

ssh -D 1080 -N tuser@你的Debian服务器IP
  • 注意:Windows 不支持 -f 后台运行参数,需保持 PowerShell 窗口打开(关闭窗口则代理断开);若需后台运行,可使用第三方工具(如 PuTTYXshell)的“后台最小化”功能。

5.3 验证代理可用性

代理建立后,可通过以下方式测试:

  1. 在浏览器(如 Chrome)中配置 SOCKS 代理:
    • 进入“设置 → 高级 → 系统 → 打开计算机的代理设置”;
    • 启用“手动设置代理”,选择“SOCKS 代理”,地址填 127.0.0.1,端口填 1080(与命令中 -D 后的端口一致),保存。
  2. 访问 https://ipinfo.io,查看当前 IP 是否为 Debian 服务器的公网 IP(若为则代理生效)。

六、安全加固建议(可选)

为进一步提升安全性,避免账号被滥用,可添加以下配置:

1. 限制 SSH 登录IP(仅允许指定IP使用代理)

sshd_configMatch User tuser 块中添加:

# 仅允许 192.168.1.0/24 网段的设备连接(替换为你的实际IP段)
AllowUsers tuser@192.168.1.*

这样仅指定IP段的设备能使用 tuser 建立代理。

2. 使用 SSH 密钥认证(替代密码,更安全)

  • 客户端生成密钥对(以 Linux 为例):
    ssh-keygen -t ed25519 -C "socks-proxy-key"
    
    按提示生成密钥(默认保存在 ~/.ssh/id_ed25519)。
  • 将公钥上传到 Debian 服务器的 tuser 家目录:
    ssh-copy-id -i ~/.ssh/id_ed25519.pub tuser@你的Debian服务器IP
    
  • sshd_config 中禁用密码认证(仅允许密钥):
    Match User tuser
        # 禁用密码认证,仅允许密钥
        PasswordAuthentication no
        PubkeyAuthentication yes
        # 其他配置不变...
    
  • 重启 SSH 服务:sudo systemctl restart sshd。 此后客户端需通过密钥连接代理,无需输入密码,且安全性更高。

七、常见问题排查

  1. 客户端连接提示“Permission denied”

    • 检查 tuser 密码是否正确;
    • 查看 sshd_configPasswordAuthentication 是否为 yes(若用密码认证);
    • 检查服务器防火墙是否允许 22 端口(SSH默认端口):sudo ufw allow 22(若启用了 ufw 防火墙)。
  2. 代理建立后无法上网

    • 检查 Debian 服务器是否开启 IP 转发(SOCKS 代理需要):
      # 临时开启 IP 转发
      sudo sysctl -w net.ipv4.ip_forward=1
      # 永久开启(重启生效)
      sudo echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
      sudo sysctl -p
      
    • 检查服务器是否有防火墙规则阻止转发流量:sudo iptables -L(需确保转发规则允许)。
  3. SSHD 服务重启失败

    • 执行 sudo sshd -t 查看配置错误;
    • 对比备份文件 sshd_config.bak,恢复错误配置。
  4. Unable to negotiate with x.x.x.x port 55488: no matching host key type found. Their offer: ssh-rsa,ssh-dss [preauth]

# 在文件中添加以下内容(可以放在文件末尾):
# 允许使用rsa密钥算法以兼容旧客户端
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa

通过以上步骤,即可在 Debian 12 中创建一个仅用于 SOCKS 代理、无法直接登录的安全账号,满足代理需求的同时避免系统被非法操作。