My Google-Fu has failed me and i am stuck if any one can help
I am trying to create a custom ssh shell in elixir using the erlang :ssh library so that i can ssh into my application with a restricted set of options/commands available. I can log in successfully (using passwords is fine for this use) but at that point i can not send anything to the client or receive anything from the client (at least i can not work out how).
I have read the erlang ssh library document and looked at an example library (esshd) but the information i need is not clear and the library does not work for me (and no dev help). Please see attached example code.
def init(_opts) do
Logger.info("--> Starting Communications.SSHD process")
# start the erlang library
:ssh.start()
# config the server
{ok, sshd2} = :ssh.daemon(10022,
shell: &on_shell/2,
system_dir: './priv/daemon',
user_passwords: [{'test', 'testpass'}],
user_dir: './')
# link the ssh daemon pid to ourselves
Process.link sshd2
{:ok, []}
end
def on_shell(username, {ip, port} = peer_address) do
Logger.info("Onshell Called")
# spawn a thread to handle the shell
spawn(__MODULE__, handle_shell, [])
end
# handle the shell commands
def handle_shell() do
Logger.info("Shell staretd #{inspect Process.group_leader}")
_ = :io.setopts(Process.group_leader, binary: true, encoding: :unicode)
# this never appears on client or server console
IO.puts "Interactive example SSH shell - type exit ENTER to quit"
end
Any ideas?
Thanks
Tom






















