Method: Beaker::HostPrebuiltSteps#enable_root_login

Defined in:
lib/beaker/host_prebuilt_steps.rb

#enable_root_login(host, opts) ⇒ Object

Update sshd_config on debian, ubuntu, centos, el, redhat, cumulus, and fedora boxes to allow for root login

Does nothing on other platfoms.

Parameters:

  • host (Host, Array<Host>)

    One or more hosts to act upon

  • opts (Hash{Symbol=>String})

    Options to alter execution.

Options Hash (opts):



399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
# File 'lib/beaker/host_prebuilt_steps.rb', line 399

def  host, opts
  logger = opts[:logger]
  block_on host do |host|
    logger.debug "Update /etc/ssh/sshd_config to allow root login"
    if host['platform'] =~ /osx/
      host.exec(Command.new("sudo sed -i '' 's/#PermitRootLogin no/PermitRootLogin Yes/g' /etc/sshd_config"))
      host.exec(Command.new("sudo sed -i '' 's/#PermitRootLogin yes/PermitRootLogin Yes/g' /etc/sshd_config"))
    elsif host['platform'] =~ /freebsd/
      host.exec(Command.new("sudo sed -i -e 's/#PermitRootLogin no/PermitRootLogin yes/g' /etc/ssh/sshd_config"), {:pty => true} )
    elsif host['platform'] =~ /openbsd/
      host.exec(Command.new("sudo perl -pi -e 's/^PermitRootLogin no/PermitRootLogin yes/' /etc/ssh/sshd_config"), {:pty => true} )
    elsif host['platform'] =~ /solaris-10/
      host.exec(Command.new("sudo gsed -i -e 's/#PermitRootLogin no/PermitRootLogin yes/g' /etc/ssh/sshd_config"), {:pty => true} )
    elsif host['platform'] =~ /solaris-11/
      host.exec(Command.new("sudo rolemod -K type=normal root"), {:pty => true} )
      host.exec(Command.new("sudo gsed -i -e 's/PermitRootLogin no/PermitRootLogin yes/g' /etc/ssh/sshd_config"), {:pty => true} )
    elsif not host.is_powershell?
      host.exec(Command.new("sudo su -c \"sed -ri 's/^#?PermitRootLogin no|^#?PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config\""), {:pty => true})
    else
      logger.warn("Attempting to enable root login non-supported platform: #{host.name}: #{host['platform']}")
    end
    #restart sshd
    if host['platform'] =~ /debian|ubuntu|cumulus/
      host.exec(Command.new("sudo su -c \"service ssh restart\""), {:pty => true})
    elsif host['platform'] =~ /centos-7|el-7|redhat-7/
      host.exec(Command.new("sudo -E systemctl restart sshd.service"), {:pty => true})
    elsif host['platform'] =~ /centos|el-|redhat|fedora|eos/
      host.exec(Command.new("sudo -E /sbin/service sshd reload"), {:pty => true})
    elsif host['platform'] =~ /(free|open)bsd/
      host.exec(Command.new("sudo /etc/rc.d/sshd restart"))
    elsif host['platform'] =~ /solaris/
      host.exec(Command.new("sudo -E svcadm restart network/ssh"), {:pty => true} )
    else
      logger.warn("Attempting to update ssh on non-supported platform: #{host.name}: #{host['platform']}")
    end
  end
end