diff options
author | Erlang/OTP <[email protected]> | 2018-02-21 15:09:47 +0100 |
---|---|---|
committer | Erlang/OTP <[email protected]> | 2018-02-21 15:09:47 +0100 |
commit | 3024332c70e90eb0a6ee07eebc09647a4160a5b3 (patch) | |
tree | 58b2461ecb66226a27190a3517375762cba3db81 /lib/ssh/src | |
parent | a17e29513b992afe82d7cdfdd3c880158ad0d80a (diff) | |
parent | ed01a9d3f2614933d05e7d85b4bb3568c4e04cdb (diff) | |
download | otp-3024332c70e90eb0a6ee07eebc09647a4160a5b3.tar.gz otp-3024332c70e90eb0a6ee07eebc09647a4160a5b3.tar.bz2 otp-3024332c70e90eb0a6ee07eebc09647a4160a5b3.zip |
Merge branch 'hans/ssh/limit_knownhosts/OTP-14935' into maint-20
* hans/ssh/limit_knownhosts/OTP-14935:
ssh: Add option save_accepted_host
Diffstat (limited to 'lib/ssh/src')
-rw-r--r-- | lib/ssh/src/ssh_options.erl | 6 | ||||
-rw-r--r-- | lib/ssh/src/ssh_transport.erl | 5 |
2 files changed, 10 insertions, 1 deletions
diff --git a/lib/ssh/src/ssh_options.erl b/lib/ssh/src/ssh_options.erl index 68c99743ee..cf1534bd78 100644 --- a/lib/ssh/src/ssh_options.erl +++ b/lib/ssh/src/ssh_options.erl @@ -439,6 +439,12 @@ default(client) -> class => user_options }, + {save_accepted_host, def} => + #{default => true, + chk => fun erlang:is_boolean/1, + class => user_options + }, + {pref_public_key_algs, def} => #{default => ssh_transport:default_algorithms(public_key), chk => fun check_pref_public_key_algs/1, diff --git a/lib/ssh/src/ssh_transport.erl b/lib/ssh/src/ssh_transport.erl index 154894cda8..a7f4854b4b 100644 --- a/lib/ssh/src/ssh_transport.erl +++ b/lib/ssh/src/ssh_transport.erl @@ -889,10 +889,13 @@ known_host_key(#ssh{opts = Opts, key_cb = {KeyCb,KeyCbOpts}, peer = {PeerName,_} {_,true} -> ok; {_,false} -> + DoAdd = ?GET_OPT(save_accepted_host, Opts), case accepted_host(Ssh, PeerName, Public, Opts) of - true -> + true when DoAdd == true -> {_,R} = add_host_key(KeyCb, PeerName, Public, [{key_cb_private,KeyCbOpts}|UserOpts]), R; + true when DoAdd == false -> + ok; false -> {error, rejected_by_user}; {error,E} -> |