systemd服务:无法执行命令:权限被拒绝
systemd service: Failed to execute command: Permission denied
我正在尝试 运行 systemd 服务中的 SSH 命令。尽管我是我设置为 运行 的用户,但命令 fedora
有权执行该命令所需的所有内容(由 运行 在登录 shell 中手动执行命令验证,无需文件的失败和权限检查),它仍然给出权限被拒绝的错误。
[Unit]
Description=AutoSSH tunnel
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/ssh -f -TN -L 3333:localhost:3333 -o "ExitOnForwardFailure yes" -o "ServerAliveInterval 60" -i /home/fedora/.ssh/id_rsa ubuntu@server
ExecStop=/usr/bin/pkill -f 3333:localhost:3333
Restart=always
RestartSec=10
User=fedora
Group=fedora
[Install]
WantedBy=multi-user.target
错误信息:
Oct 16 11:10:47 Lenovoserver systemd[2318595]: autossh-tunnel.service: Failed to execute command: Permission denied
Oct 16 11:10:47 Lenovoserver systemd[2318595]: autossh-tunnel.service: Failed at step EXEC spawning /usr/bin/ssh: Permission denied
权限检查:
-rwxr-xr-x. 1 root root 808832 Oct 9 2019 /usr/bin/ssh
fedora
用户有权限执行 /usr/bin/ssh
-rw-------. 1 fedora fedora 2610 Jan 3 2020 /home/fedora/.ssh/id_rsa
fedora
用户对其私钥具有读取权限。
我是不是做错了什么或者这是一个 systemd
错误?
可能是SELinux,新的ssh端口必须在selinux中注册。
首先通过暂时禁用 selinux 来检查服务是否正常工作,如果正常,请将 ssh 端口添加到 selinux,如下所示。
# Check selinux status
sestatus
# Disable selinux temporarily
setenforce 0
# Check selinux ssh port
semanage port -l | grep ssh
ssh_port_t tcp 22
# Add selinux ssh port
sudo semanage port -a -t ssh_port_t -p tcp 3333
# Check selinux ssh port
semanage port -l | grep ssh
ssh_port_t tcp 22, 3333
我正在尝试 运行 systemd 服务中的 SSH 命令。尽管我是我设置为 运行 的用户,但命令 fedora
有权执行该命令所需的所有内容(由 运行 在登录 shell 中手动执行命令验证,无需文件的失败和权限检查),它仍然给出权限被拒绝的错误。
[Unit]
Description=AutoSSH tunnel
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/ssh -f -TN -L 3333:localhost:3333 -o "ExitOnForwardFailure yes" -o "ServerAliveInterval 60" -i /home/fedora/.ssh/id_rsa ubuntu@server
ExecStop=/usr/bin/pkill -f 3333:localhost:3333
Restart=always
RestartSec=10
User=fedora
Group=fedora
[Install]
WantedBy=multi-user.target
错误信息:
Oct 16 11:10:47 Lenovoserver systemd[2318595]: autossh-tunnel.service: Failed to execute command: Permission denied
Oct 16 11:10:47 Lenovoserver systemd[2318595]: autossh-tunnel.service: Failed at step EXEC spawning /usr/bin/ssh: Permission denied
权限检查:
-rwxr-xr-x. 1 root root 808832 Oct 9 2019 /usr/bin/ssh
fedora
用户有权限执行 /usr/bin/ssh
-rw-------. 1 fedora fedora 2610 Jan 3 2020 /home/fedora/.ssh/id_rsa
fedora
用户对其私钥具有读取权限。
我是不是做错了什么或者这是一个 systemd
错误?
可能是SELinux,新的ssh端口必须在selinux中注册。
首先通过暂时禁用 selinux 来检查服务是否正常工作,如果正常,请将 ssh 端口添加到 selinux,如下所示。
# Check selinux status
sestatus
# Disable selinux temporarily
setenforce 0
# Check selinux ssh port
semanage port -l | grep ssh
ssh_port_t tcp 22
# Add selinux ssh port
sudo semanage port -a -t ssh_port_t -p tcp 3333
# Check selinux ssh port
semanage port -l | grep ssh
ssh_port_t tcp 22, 3333