Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
[Erlang] - ssh and ssh_sftp bugs and misleading messages

Misleading error message on ssh_sftp:start_channel/1 in case user does not have a shell

When starting a SFTP channel towards a system where user does not have a shell (i.e. it has /bin/false or equilvalent assigned in the /etc/passwd a misleading error message is returned to the user:

1> test:go(). 
** exception exit: {normal,{gen_server,call,
     in function  gen_server:call/3 (gen_server.erl, line 188)
     in call from ssh_channel:call/3 (ssh_channel.erl, line 88)
     in call from ssh_sftp:start_channel/2 (ssh_sftp.erl, line 93)
     in call from test:connect/1 (test.erl, line 14)



go() ->
    ok = application:start(crypto),
    ok = application:start(asn1),
    ok = application:start(public_key),
    ok = application:start(ssh),

connect(Username) ->
    {ok, SSHRef} = ssh:connect("localhost", 22, [{user, Username}]),
    {ok, _SFTPChannelRef} = ssh_sftp:start_channel(SSHRef),

This has been experienced in both R16B03 and R15B03.

Crash on SSH connect

On R16B03, when connecting via SSH on OS X Mavericks I get:

1> test:go().
** exception error: no match of right hand side value {error,"Internal error"}
     in function  test:connect/1 (test.erl, line 13)
=ERROR REPORT==== 7-Feb-2014::13:38:06 ===
Erlang ssh connection handler failed with reason: function_clause 
, Stacktace: [{ssh_connection_handler,userauth,
                  [{ssh_msg_userauth_pk_ok,<<>>, ...

Internal Crash is not real when using the key_cb option

When using the 'key_cb' option on ssh:connect/3 the user should implement a series of callback functions. Not implementing them and trying to connect results in an "internal error" which invites the user to send a bug report. The undef callback function should be catched and reported as a normal error, not an internal one.

please report this to 
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment