generate rsa private/public key and return public key on jumper server
[why] register the public key on testbox enable user one click to login in the testbox
[how] generate rsa private/public key for user on jumper server return and register the public key to es
Signed-off-by: Luan Shengde shdluan@163.com --- container/assign-account/get_account_info.rb | 32 ++++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-)
diff --git a/container/assign-account/get_account_info.rb b/container/assign-account/get_account_info.rb index 137f5c6..b5a2388 100755 --- a/container/assign-account/get_account_info.rb +++ b/container/assign-account/get_account_info.rb @@ -94,30 +94,36 @@ class AccountStorage end
def setup_jumper_account_info - account_info = read_account_info - jumper_info = read_jumper_info + login_name, password = read_account_info + jumper_host, jumper_port = read_jumper_info pub_key = @data['my_ssh_pubkey'] unless @data['my_ssh_pubkey'].nil?
- login_name = account_info[0] - password = if pub_key.nil? - account_info[1] - else - 'Use pub_key to login' - end + password = 'Use pub_key to login' unless pub_key.nil? + + config_authorized_key(login_name, pub_key) unless pub_key.nil? + config_default_yaml(login_name) + my_jumper_pubkey = generate_ssh_key(login_name) if @data['my_jumper_pubkey'].eql? true
jumper_account_info = { 'my_login_name' => login_name, 'my_password' => password, - 'jumper_host' => jumper_info[0].chomp, - 'jumper_port' => jumper_info[1].chomp + 'jumper_host' => jumper_host, + 'jumper_port' => jumper_port, + 'my_jumper_pubkey' => my_jumper_pubkey }
- config_authorized_key(login_name, pub_key) unless pub_key.nil? - config_default_yaml(login_name) - return jumper_account_info end
+ def generate_ssh_key(login_name) + ssh_dir = File.join('/home/', login_name, '.ssh') + Dir.mkdir ssh_dir, 0o700 unless File.exist? ssh_dir + hostname = File.read('/etc/hostname') + %x(ssh-keygen -f "#{ssh_dir}/id_rsa" -N '' -C "#{login_name}@#{hostname}") + %x(chown -R #{login_name}:#{login_name} #{ssh_dir}) + File.read("/home/#{login_name}/.ssh/id_rsa.pub") + end + def config_default_yaml(login_name) default_yaml_dir = File.join('/home', login_name, '.config/compass-ci/defaults') FileUtils.mkdir_p default_yaml_dir
On Thu, Nov 12, 2020 at 11:26:20AM +0800, Wu Fengguang wrote:
- my_jumper_pubkey = generate_ssh_key(login_name) if @data['my_jumper_pubkey'].eql? true
generate_ssh_key() should be called if login_name permits ssh login.
a question: we add option for answerback-email for generate the keys or not if called the function according to login_name permits whether we still need add the option for answerback-email
Thanks, Luan Shengde
Thanks, Fengguang
On Thu, Nov 12, 2020 at 11:52:48AM +0800, Luan Shengde wrote:
On Thu, Nov 12, 2020 at 11:26:20AM +0800, Wu Fengguang wrote:
- my_jumper_pubkey = generate_ssh_key(login_name) if @data['my_jumper_pubkey'].eql? true
generate_ssh_key() should be called if login_name permits ssh login.
by default, the login_name permits login with pubkey or password. how can I determine whether the login_name permits 'ssh login'?
Thanks, Luan Shengde
a question: we add option for answerback-email for generate the keys or not if called the function according to login_name permits whether we still need add the option for answerback-email
Thanks, Luan Shengde
Thanks, Fengguang