I’m trying to get an IEx shell to use recon on an Elixir app running in production:
$ ssh ubuntu@<host> /home/ubuntu/current/bin/<project-id> remote
warning: the --remsh option will be ignored because IEx is running on limited shell
iex(<project-id>@127.0.0.1)1>
Because this IEx session is running on a limited shell there is no navigation with the arrow keys (which give ^[[C, ^[[D,…). Any :recon_tracer.call/3 function call also comes back with 0 matches.
When I use the ssh -t command to force a tty shell and provide the RELEASE_COOKIE variable everything works as expected:
$ ssh -t ubuntu@<host> RELEASE_COOKIE=<cookie> /home/ubuntu/current/bin/<project-id> remote
iex(<project-id>@127.0.0.1)1>
Both arrow keys and :recon_tracer work in this shell.
What I find weird is that the tty shell without RELEASE_COOKIE does not work as it does without the -t option:
$ ssh -t ubuntu@<host> /home/ubuntu/current/bin/<project-id> remote
Connection attempt from node :"rem-eb50-<project-id>@127.0.0.1" rejected. Invalid challenge reply. **
This command throws the following error in the production node logs:
Connection attempt from node :"rem-eb50-<project-name>@127.0.0.1" rejected. Invalid challenge reply.
So I have two main questions:
- Why does the IEx node not connect when using the ssh -t option while it works fine without?
- Why does :recon_tracer not work when the --remsh option is ignored?
I would greatly appreciate anyone who can help me understand what is going on here.