Skip to content

Commit 1b4737f

Browse files
committed
Strip comments when installing ssh keys
1 parent 00cd6e1 commit 1b4737f

1 file changed

Lines changed: 16 additions & 7 deletions

File tree

lib/ssh/test/ssh_test_lib.erl

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,8 @@ setup_known_host/3,
124124
get_addr_str/0,
125125
file_base_name/2,
126126
kex_strict_negotiated/2,
127-
event_logged/3
127+
event_logged/3,
128+
remove_comment/1
128129
]).
129130
%% logger callbacks and related helpers
130131
-export([log/2,
@@ -1218,10 +1219,12 @@ setup_all_user_keys(DataDir, UserDir) ->
12181219
setup_user_key(SshAlg, DataDir, UserDir) ->
12191220
file:make_dir(UserDir),
12201221
%% Copy private user key to user's dir
1221-
{ok,_} = file:copy(filename:join(DataDir, file_base_name(user_src,SshAlg)),
1222-
filename:join(UserDir, file_base_name(user,SshAlg))),
1222+
{ok, Priv0} = file:read_file(filename:join(DataDir, file_base_name(user_src,SshAlg))),
1223+
Priv = remove_comment(Priv0),
1224+
ok = file:write_file(filename:join(UserDir, file_base_name(user,SshAlg)), Priv),
12231225
%% Setup authorized_keys in user's dir
1224-
{ok,Pub} = file:read_file(filename:join(DataDir, file_base_name(user_src,SshAlg)++".pub")),
1226+
{ok,Pub0} = file:read_file(filename:join(DataDir, file_base_name(user_src,SshAlg)++".pub")),
1227+
Pub = remove_comment(Pub0),
12251228
ok = file:write_file(filename:join(UserDir, "authorized_keys"),
12261229
io_lib:format("~n~s~n",[Pub]),
12271230
[append]),
@@ -1239,19 +1242,25 @@ setup_host_key_create_dir(SshAlg, DataDir, BaseDir) ->
12391242
setup_host_key(SshAlg, DataDir, SysDir) ->
12401243
mk_dir_path(SysDir),
12411244
%% Copy private host key to system's dir
1242-
{ok,_} = file:copy(filename:join(DataDir, file_base_name(system_src,SshAlg)),
1243-
filename:join(SysDir, file_base_name(system,SshAlg))),
1245+
{ok,Priv0} = file:read_file(filename:join(DataDir, file_base_name(system_src,SshAlg))),
1246+
Priv = remove_comment(Priv0),
1247+
ok = file:write_file(filename:join(SysDir, file_base_name(system,SshAlg)), Priv),
12441248
?ct_log_show_file( filename:join(SysDir, file_base_name(system,SshAlg)) ),
12451249
ok.
12461250

12471251
setup_known_host(SshAlg, DataDir, UserDir) ->
1248-
{ok,Pub} = file:read_file(filename:join(DataDir, file_base_name(system_src,SshAlg)++".pub")),
1252+
{ok,Pub0} = file:read_file(filename:join(DataDir, file_base_name(system_src,SshAlg)++".pub")),
1253+
Pub = remove_comment(Pub0),
12491254
S = lists:join(" ", lists:reverse(tl(lists:reverse(string:tokens(binary_to_list(Pub), " "))))),
12501255
ok = file:write_file(filename:join(UserDir, "known_hosts"),
12511256
io_lib:format("~p~n",[S])),
12521257
?ct_log_show_file( filename:join(UserDir, "known_hosts") ),
12531258
ok.
12541259

1260+
remove_comment(Bin) ->
1261+
Lines = string:split(Bin, "\n", all),
1262+
FilteredLines = [L || L <- Lines, string:prefix(L, "#") == nomatch],
1263+
list_to_binary(lists:join("\n", FilteredLines)).
12551264

12561265
get_addr_str() ->
12571266
{ok, Hostname} = inet:gethostname(),

0 commit comments

Comments
 (0)