You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04下通过Systemd配置持久化SSH隧道失败问题求助

Ubuntu 22.04下通过Systemd配置持久化SSH隧道失败问题求助

你遇到的这个问题其实挺常见的——systemd服务的运行环境和普通用户命令行环境差异很大,咱们一步步来排查解决:

首先排查SSH密钥的权限问题

SSH对密钥文件的权限要求非常严格,哪怕权限稍微宽松一点都会拒绝使用密钥。你先检查本地的密钥文件和目录权限:

ls -ld /home/<username>/.ssh
ls -l /home/<username>/.ssh/id_rsa
ls -l /home/<username>/.ssh/id_rsa.pub

正确的权限应该是:

  • .ssh目录:权限700(只有所有者能读写执行)
  • id_rsa私钥:权限600(只有所有者能读写)
  • id_rsa.pub公钥:权限644(所有者读写,其他只读)

如果权限不对,用下面的命令修正:

chmod 700 /home/<username>/.ssh
chmod 600 /home/<username>/.ssh/id_rsa
chmod 644 /home/<username>/.ssh/id_rsa.pub

另外也要检查远程主机上~/.ssh/authorized_keys文件的权限,同样要求是600,目录~/.ssh是700,否则远程SSH服务会拒绝使用这个公钥认证。

配置Systemd服务的环境变量

普通用户登录时会自动加载HOME等环境变量,但systemd服务默认的环境可能不完整,特别是HOME变量。你可以在[Service]段里添加环境配置,确保SSH能找到正确的用户目录:

[Service]
# 保留原有配置,添加下面两行
Environment="HOME=/home/<username>"
WorkingDirectory=/home/<username>

强制SSH只使用指定的密钥

有时候SSH会尝试其他可用的密钥(比如root用户的密钥),导致忽略你指定的私钥。可以在SSH命令里添加-o IdentitiesOnly=yes参数,强制SSH只使用你指定的-i参数里的密钥:
修改ExecStart行如下:

ExecStart=/usr/bin/ssh -gnNT -o ExitOnForwardFailure=yes -o ServerAliveInterval=30 -o PasswordAuthentication=no -o PubkeyAuthentication=yes -o IdentitiesOnly=yes -i /home/<username>/.ssh/id_rsa -R <remote_port>:localhost:<local_port> username@<remotehost>

测试Systemd服务的运行环境

如果还是不行,可以临时切换到服务指定的用户,带上调试参数测试SSH命令,看看具体哪里出问题:

su - <username> -c "/usr/bin/ssh -v -gnNT -o ExitOnForwardFailure=yes -o ServerAliveInterval=30 -o PasswordAuthentication=no -o PubkeyAuthentication=yes -i /home/<username>/.ssh/id_rsa -R <remote_port>:localhost:<local_port> username@<remotehost>"

-v参数会输出详细的SSH调试日志,你能清楚看到是找不到密钥,还是远程主机拒绝了公钥认证。

关于sudo运行命令需要密码的问题

当你用sudo运行命令时,当前用户是root,SSH会优先尝试root用户的密钥(比如/root/.ssh/id_rsa),而不是你指定的普通用户密钥。加上-o IdentitiesOnly=yes参数可以强制它使用你指定的密钥,但更推荐保持原来的普通用户配置运行服务,避免用root带来的权限风险。

最后,修改完配置后记得重新加载systemd并重启服务:

sudo systemctl daemon-reload
sudo systemctl restart rtunnel.service
# 查看状态和实时日志
sudo systemctl status rtunnel.service
journalctl -u rtunnel.service -f

备注:内容来源于stack exchange,提问作者Coopdis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 12:24:37