I tried running remote commands with sshd open locally on Mac.
For example
$ ssh username@localhost ls
Command like this work just fine.
But
$ ssh username@localhost docker
is not executed and the following error is displayed.
$ ssh username@localhost docker
sh: docker: command not found
If I connect with the command and run the docker command, it runs normally.
$ssh username@localhost
$docker
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
Options:
--config string Location of client config files (default "/Users/7143213/.docker")
-c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set
with "docker context use")
-D, --debug Enable debug mode
-H, --host list Daemon socket(s) to connect to
-l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default "/Users/7143213/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/Users/7143213/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/Users/7143213/.docker/key.pem")
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit
...
ssh username@localhost /usr/local/bin/docker
Even if I write down the full path of docker as above, it runs normally.
The /usr/local/bin path
is registered in .bash_profile
and .profile
.
Docker was launched as docker desktop on mac
.
The Mac version is macOS monterey 12.2
.
Update
In my case, the issue was that the path was not set in non-interactive non-login of ssh.
Because I was using zsh
I solved it by adding alias docker=/usr/local/bin/docker
to /etc/zshenv
.