alajmo / sake

:robot: sake is a task runner for local and remote hosts
https://sakecli.com
MIT License
649 stars 24 forks source link

Bug when using sake with .ssh/config #56

Open vunhatchuong opened 1 year ago

vunhatchuong commented 1 year ago

Info

Problem / Steps to reproduce

sake.yaml:

servers:
  myserver:
    host: server

tasks:
  ping:
    desc: Pong
    cmd: echo "pong"

~/.ssh/config:

Host server
  HostName 123.123.123.123
  User root
  IdentityFile ~/.ssh/ailab_ed25519

sake run ping --all

Output:

error: open ~/.ssh/ailab_ed25519: no such file or directory
sake ssh myserver

Output:

ronny@123.123.123.123's password:

It picks up my PC name (ronny) instead of the the server username (root).


$ ssh-keygen -t ed25519 -C "ailab-server"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/ronny/.ssh/id_ed25519): ailab_ed25519
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Passphrase is empty

alajmo commented 1 year ago

Seems ~ was not resolved correctly when using ssh config (it is if specifying the in sake.yaml), as well as PubFile not being updated when using ssh config. Should be fixed with 0.15.1, let me know if it isn't.

vunhatchuong commented 1 year ago

Sorry for late reply, looks like there's another error:

sake run ping --all

output:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x75d5be]

goroutine 1 [running]:
github.com/alajmo/sake/core/run.ParseServers(0xc00005fce0, 0xc000111210, 0xc0001b2580, {0x834538?, 0x0?})
    /home/runner/work/sake/sake/core/run/exec.go:655 +0xa1e
github.com/alajmo/sake/core/run.(*Run).RunTask(0xc000111200, {0x0, 0x0, 0x0}, 0xc0001b2580, 0x0?)
    /home/runner/work/sake/sake/core/run/exec.go:74 +0x170
github.com/alajmo/sake/cmd.runTask({0xc00006b3a0, 0x1, 0x0?}, 0xb7a760, 0xc0001b2580, 0xc0001be9f0?)
    /home/runner/work/sake/sake/cmd/run.go:338 +0x5ea
github.com/alajmo/sake/cmd.runCmd.func1(0xc0001ba900?, {0xc00006b3a0, 0x1, 0x2})
    /home/runner/work/sake/sake/cmd/run.go:141 +0x775
github.com/spf13/cobra.(*Command).execute(0xc0001ba900, {0xc00006b380, 0x2, 0x2})
    /home/runner/go/pkg/mod/github.com/spf13/cobra@v1.7.0/command.go:944 +0x847
github.com/spf13/cobra.(*Command).ExecuteC(0xb75880)
    /home/runner/go/pkg/mod/github.com/spf13/cobra@v1.7.0/command.go:1068 +0x3bd
github.com/spf13/cobra.(*Command).Execute(...)
    /home/runner/go/pkg/mod/github.com/spf13/cobra@v1.7.0/command.go:992
github.com/alajmo/sake/cmd.Execute()
    /home/runner/work/sake/sake/cmd/root.go:42 +0x25
main.main()
    /home/runner/work/sake/sake/main.go:8 +0x17
way-zer commented 10 months ago

It seems sake try to resolve the host as hostname, but fail. Maybe use ssh -G <host> for resolve ssh configuration. (That also support Host *)