itamae-plugin-recipe-openssh 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/.gitignore +9 -0
 - data/.rspec +2 -0
 - data/.travis.yml +3 -0
 - data/Gemfile +4 -0
 - data/README.md +37 -0
 - data/Rakefile +27 -0
 - data/Vagrantfile +19 -0
 - data/itamae-plugin-recipe-openssh.gemspec +25 -0
 - data/lib/itamae/plugin/recipe/openssh/attributes.rb +129 -0
 - data/lib/itamae/plugin/recipe/openssh/default.rb +40 -0
 - data/lib/itamae/plugin/recipe/openssh/iptables.rb +13 -0
 - data/lib/itamae/plugin/recipe/openssh/openssh.rb +11 -0
 - data/lib/itamae/plugin/recipe/openssh/templates/ssh_config.erb +17 -0
 - data/lib/itamae/plugin/recipe/openssh/templates/sshd_config.erb +26 -0
 - data/lib/itamae/plugin/recipe/openssh/version.rb +9 -0
 - metadata +115 -0
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA1:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 6477bb08a13b2409a83f5d0a10b09d2947f55f74
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: fa01895ea95dddd8f56dfd9d0f0e0f22e3011b7e
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: ddc2e34cb755ef108eef87b75c0f0c822b15c6e489ccd24dd5a0728002292789d4db8caaf0f804d49dd36b921c5d4d12fe1380117f0f9be72bd07670cd315be8
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 2bddbc68f4edab97b735d3e4ca9da5deb23bbf27c4dbbf3d5fd0f42e39db48b98db470dce441982a991f843871b559b5607833193cfa27f6110031fb471dcc43
         
     | 
    
        data/.gitignore
    ADDED
    
    
    
        data/.rspec
    ADDED
    
    
    
        data/.travis.yml
    ADDED
    
    
    
        data/Gemfile
    ADDED
    
    
    
        data/README.md
    ADDED
    
    | 
         @@ -0,0 +1,37 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Itamae::Plugin::Recipe::Openssh
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Itamae recipe plugin for openssh
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            ## Installation
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            Add this line to your application's Gemfile:
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 10 
     | 
    
         
            +
            gem 'itamae-plugin-recipe-sshd'
         
     | 
| 
      
 11 
     | 
    
         
            +
            ```
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            And then execute:
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                $ bundle
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            Or install it yourself as:
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                $ gem install itamae-plugin-recipe-sshd
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            ## Usage
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            TODO: Write usage instructions here
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            ## Development
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            ## Contributing
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            1. Fork it ( https://github.com/[my-github-username]/itamae-plugin-recipe-sshd/fork )
         
     | 
| 
      
 34 
     | 
    
         
            +
            2. Create your feature branch (`git checkout -b my-new-feature`)
         
     | 
| 
      
 35 
     | 
    
         
            +
            3. Commit your changes (`git commit -am 'Add some feature'`)
         
     | 
| 
      
 36 
     | 
    
         
            +
            4. Push to the branch (`git push origin my-new-feature`)
         
     | 
| 
      
 37 
     | 
    
         
            +
            5. Create a new Pull Request
         
     | 
    
        data/Rakefile
    ADDED
    
    | 
         @@ -0,0 +1,27 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rake'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'rspec/core/rake_task'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            task :spec    => 'spec:all'
         
     | 
| 
      
 5 
     | 
    
         
            +
            task :default => :spec
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            namespace :spec do
         
     | 
| 
      
 8 
     | 
    
         
            +
              targets = []
         
     | 
| 
      
 9 
     | 
    
         
            +
              Dir.glob('./spec/*').each do |dir|
         
     | 
| 
      
 10 
     | 
    
         
            +
                next unless File.directory?(dir)
         
     | 
| 
      
 11 
     | 
    
         
            +
                target = File.basename(dir)
         
     | 
| 
      
 12 
     | 
    
         
            +
                target = "_#{target}" if target == "default"
         
     | 
| 
      
 13 
     | 
    
         
            +
                targets << target
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              task :all     => targets
         
     | 
| 
      
 17 
     | 
    
         
            +
              task :default => :all
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
              targets.each do |target|
         
     | 
| 
      
 20 
     | 
    
         
            +
                original_target = target == "_default" ? target[1..-1] : target
         
     | 
| 
      
 21 
     | 
    
         
            +
                desc "Run serverspec tests to #{original_target}"
         
     | 
| 
      
 22 
     | 
    
         
            +
                RSpec::Core::RakeTask.new(target.to_sym) do |t|
         
     | 
| 
      
 23 
     | 
    
         
            +
                  ENV['TARGET_HOST'] = original_target
         
     | 
| 
      
 24 
     | 
    
         
            +
                  t.pattern = "spec/#{original_target}/*_spec.rb"
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
            end
         
     | 
    
        data/Vagrantfile
    ADDED
    
    | 
         @@ -0,0 +1,19 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- mode: ruby -*-
         
     | 
| 
      
 2 
     | 
    
         
            +
            # vi: set ft=ruby :
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            VAGRANTFILE_API_VERSION = "2"
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              config.vm.define :centos66 do |c|
         
     | 
| 
      
 9 
     | 
    
         
            +
                c.vm.box = "centos6.6"
         
     | 
| 
      
 10 
     | 
    
         
            +
                c.vm.box_url = 'https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.0.0/centos-6.6-x86_64.box'
         
     | 
| 
      
 11 
     | 
    
         
            +
                c.vm.network :private_network, ip: '192.168.33.11'
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              config.vm.define :ubuntu1404 do |c|
         
     | 
| 
      
 15 
     | 
    
         
            +
                c.vm.box = "ubuntu1404"
         
     | 
| 
      
 16 
     | 
    
         
            +
                c.vm.box_url = 'https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box'
         
     | 
| 
      
 17 
     | 
    
         
            +
                c.vm.network :private_network, ip: '192.168.33.12'
         
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
      
 19 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,25 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # coding: utf-8
         
     | 
| 
      
 2 
     | 
    
         
            +
            lib = File.expand_path('../lib', __FILE__)
         
     | 
| 
      
 3 
     | 
    
         
            +
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'itamae/plugin/recipe/openssh/version'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            Gem::Specification.new do |spec|
         
     | 
| 
      
 7 
     | 
    
         
            +
              spec.name          = "itamae-plugin-recipe-openssh"
         
     | 
| 
      
 8 
     | 
    
         
            +
              spec.version       = Itamae::Plugin::Recipe::Openssh::VERSION
         
     | 
| 
      
 9 
     | 
    
         
            +
              spec.authors       = ["namusyaka"]
         
     | 
| 
      
 10 
     | 
    
         
            +
              spec.email         = ["namusyaka@gmail.com"]
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              spec.summary       = %q{itamae recipe plugin for openssh.}
         
     | 
| 
      
 13 
     | 
    
         
            +
              spec.description   = spec.summary
         
     | 
| 
      
 14 
     | 
    
         
            +
              spec.homepage      = "https://github.com/namusyaka/itamae-plugin-recipe-openssh"
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              spec.files         = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
         
     | 
| 
      
 17 
     | 
    
         
            +
              spec.bindir        = "exe"
         
     | 
| 
      
 18 
     | 
    
         
            +
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         
     | 
| 
      
 19 
     | 
    
         
            +
              spec.require_paths = ["lib"]
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              spec.add_runtime_dependency "itamae-plugin-resource-iptables"
         
     | 
| 
      
 22 
     | 
    
         
            +
              spec.add_development_dependency "bundler", "~> 1.9"
         
     | 
| 
      
 23 
     | 
    
         
            +
              spec.add_development_dependency "rake", "~> 10.0"
         
     | 
| 
      
 24 
     | 
    
         
            +
              spec.add_development_dependency "serverspec"
         
     | 
| 
      
 25 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,129 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            node["openssh"]["server"] ||= {}
         
     | 
| 
      
 2 
     | 
    
         
            +
            node["openssh"]["client"] ||= {}
         
     | 
| 
      
 3 
     | 
    
         
            +
            node["openssh"]["server"]["port"] ||= 22
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            node['openssh']['package_name'] ||=
         
     | 
| 
      
 6 
     | 
    
         
            +
              case node['platform_family']
         
     | 
| 
      
 7 
     | 
    
         
            +
              when 'rhel', 'fedora'
         
     | 
| 
      
 8 
     | 
    
         
            +
                %w(openssh-clients openssh-server)
         
     | 
| 
      
 9 
     | 
    
         
            +
              when 'arch', 'suse', 'gentoo'
         
     | 
| 
      
 10 
     | 
    
         
            +
                %w(openssh)
         
     | 
| 
      
 11 
     | 
    
         
            +
              when 'freebsd', 'smartos'
         
     | 
| 
      
 12 
     | 
    
         
            +
                %w()
         
     | 
| 
      
 13 
     | 
    
         
            +
              else
         
     | 
| 
      
 14 
     | 
    
         
            +
                %w(openssh-client openssh-server)
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            node['openssh']['service_name'] ||=
         
     | 
| 
      
 18 
     | 
    
         
            +
              case node['platform_family']
         
     | 
| 
      
 19 
     | 
    
         
            +
              when 'rhel', 'fedora', 'suse', 'freebsd', 'gentoo', 'arch'
         
     | 
| 
      
 20 
     | 
    
         
            +
                'sshd'
         
     | 
| 
      
 21 
     | 
    
         
            +
              else
         
     | 
| 
      
 22 
     | 
    
         
            +
                'ssh'
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            node['openssh']['config_mode'] ||=
         
     | 
| 
      
 26 
     | 
    
         
            +
              case node['platform_family']
         
     | 
| 
      
 27 
     | 
    
         
            +
              when 'rhel', 'fedora'
         
     | 
| 
      
 28 
     | 
    
         
            +
                '0600'
         
     | 
| 
      
 29 
     | 
    
         
            +
              else
         
     | 
| 
      
 30 
     | 
    
         
            +
                '0644'
         
     | 
| 
      
 31 
     | 
    
         
            +
              end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            node['openssh']['rootgroup'] ||=
         
     | 
| 
      
 34 
     | 
    
         
            +
              case node['platform_family']
         
     | 
| 
      
 35 
     | 
    
         
            +
              when 'freebsd'
         
     | 
| 
      
 36 
     | 
    
         
            +
                'wheel'
         
     | 
| 
      
 37 
     | 
    
         
            +
              else
         
     | 
| 
      
 38 
     | 
    
         
            +
                'root'
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            node['openssh']['client']['host'] ||= '*'
         
     | 
| 
      
 42 
     | 
    
         
            +
            # node['openssh']['client']['forward_agent'] ||= 'no'
         
     | 
| 
      
 43 
     | 
    
         
            +
            # node['openssh']['client']['forward_x11'] ||= 'no'
         
     | 
| 
      
 44 
     | 
    
         
            +
            # node['openssh']['client']['rhosts_rsa_authentication'] ||= 'no'
         
     | 
| 
      
 45 
     | 
    
         
            +
            # node['openssh']['client']['rsa_authentication'] ||= 'yes'
         
     | 
| 
      
 46 
     | 
    
         
            +
            # node['openssh']['client']['password_authentication'] ||= 'yes'
         
     | 
| 
      
 47 
     | 
    
         
            +
            # node['openssh']['client']['host_based_authentication'] ||= 'no'
         
     | 
| 
      
 48 
     | 
    
         
            +
            # node['openssh']['client']['gssapi_authentication'] ||= 'no'
         
     | 
| 
      
 49 
     | 
    
         
            +
            # node['openssh']['client']['gssapi_delegate_credentials'] ||= 'no'
         
     | 
| 
      
 50 
     | 
    
         
            +
            # node['openssh']['client']['batch_mode'] ||= 'no'
         
     | 
| 
      
 51 
     | 
    
         
            +
            # node['openssh']['client']['check_host_ip'] ||= 'yes'
         
     | 
| 
      
 52 
     | 
    
         
            +
            # node['openssh']['client']['address_family'] ||= 'any'
         
     | 
| 
      
 53 
     | 
    
         
            +
            # node['openssh']['client']['connect_timeout'] ||= '0'
         
     | 
| 
      
 54 
     | 
    
         
            +
            # node['openssh']['client']['strict_host_key_checking'] ||= 'ask'
         
     | 
| 
      
 55 
     | 
    
         
            +
            # node['openssh']['client']['identity_file'] ||= '~/.ssh/identity'
         
     | 
| 
      
 56 
     | 
    
         
            +
            # node['openssh']['client']['identity_file_rsa'] ||= '~/.ssh/id_rsa'
         
     | 
| 
      
 57 
     | 
    
         
            +
            # node['openssh']['client']['identity_file_dsa'] ||= '~/.ssh/id_dsa'
         
     | 
| 
      
 58 
     | 
    
         
            +
            # node['openssh']['client']['port'] ||= '22'
         
     | 
| 
      
 59 
     | 
    
         
            +
            # node['openssh']['client']['protocol'] ||= [ '2 1' ]
         
     | 
| 
      
 60 
     | 
    
         
            +
            # node['openssh']['client']['cipher'] ||= '3des'
         
     | 
| 
      
 61 
     | 
    
         
            +
            # node['openssh']['client']['ciphers'] ||= [ 'aes128-ctr aes192-ctr aes256-ctr arcfour256 arcfour128 aes128-cbc 3des-cbc' ]
         
     | 
| 
      
 62 
     | 
    
         
            +
            # node['openssh']['client']['macs'] ||= [ 'hmac-md5 hmac-sha1 umac-64@openssh.com hmac-ripemd160' ]
         
     | 
| 
      
 63 
     | 
    
         
            +
            # node['openssh']['client']['escape_char'] ||= '~'
         
     | 
| 
      
 64 
     | 
    
         
            +
            # node['openssh']['client']['tunnel'] ||= 'no'
         
     | 
| 
      
 65 
     | 
    
         
            +
            # node['openssh']['client']['tunnel_device'] ||= 'any:any'
         
     | 
| 
      
 66 
     | 
    
         
            +
            # node['openssh']['client']['permit_local_command'] ||= 'no'
         
     | 
| 
      
 67 
     | 
    
         
            +
            # node['openssh']['client']['visual_host_key'] ||= 'no'
         
     | 
| 
      
 68 
     | 
    
         
            +
            # node['openssh']['client']['proxy_command'] ||= 'ssh -q -W %h:%p gateway.example.com'
         
     | 
| 
      
 69 
     | 
    
         
            +
            # sshd config group
         
     | 
| 
      
 70 
     | 
    
         
            +
            # node['openssh']['server']['port'] ||= '22'
         
     | 
| 
      
 71 
     | 
    
         
            +
            # node['openssh']['server']['address_family'] ||= 'any'
         
     | 
| 
      
 72 
     | 
    
         
            +
            # node['openssh']['server']['listen_address'] ||= [ '0.0.0.0 ::' ]
         
     | 
| 
      
 73 
     | 
    
         
            +
            # node['openssh']['server']['protocol'] ||= '2'
         
     | 
| 
      
 74 
     | 
    
         
            +
            # node['openssh']['server']['host_key_v1'] ||= '/etc/ssh/ssh_host_key'
         
     | 
| 
      
 75 
     | 
    
         
            +
            # node['openssh']['server']['host_key_rsa'] ||= '/etc/ssh/ssh_host_rsa_key'
         
     | 
| 
      
 76 
     | 
    
         
            +
            # node['openssh']['server']['host_key_dsa'] ||= '/etc/ssh/ssh_host_dsa_key'
         
     | 
| 
      
 77 
     | 
    
         
            +
            if node['platform_family'] == 'smartos'
         
     | 
| 
      
 78 
     | 
    
         
            +
              node['openssh']['server']['host_key'] ||= ['/var/ssh/ssh_host_rsa_key', '/var/ssh/ssh_host_dsa_key']
         
     | 
| 
      
 79 
     | 
    
         
            +
            end
         
     | 
| 
      
 80 
     | 
    
         
            +
            # node['openssh']['server']['host_key_ecdsa'] ||= '/etc/ssh/ssh_host_ecdsa_key'
         
     | 
| 
      
 81 
     | 
    
         
            +
            # node['openssh']['server']['key_regeneration_interval'] ||= '1h'
         
     | 
| 
      
 82 
     | 
    
         
            +
            # node['openssh']['server']['server_key_bits'] ||= '1024'
         
     | 
| 
      
 83 
     | 
    
         
            +
            # node['openssh']['server']['syslog_facility'] ||= 'AUTH'
         
     | 
| 
      
 84 
     | 
    
         
            +
            # node['openssh']['server']['log_level'] ||= 'INFO'
         
     | 
| 
      
 85 
     | 
    
         
            +
            # node['openssh']['server']['login_grace_time'] ||= '2m'
         
     | 
| 
      
 86 
     | 
    
         
            +
            # node['openssh']['server']['permit_root_login'] ||= 'yes'
         
     | 
| 
      
 87 
     | 
    
         
            +
            # node['openssh']['server']['strict_modes'] ||= 'yes'
         
     | 
| 
      
 88 
     | 
    
         
            +
            # node['openssh']['server']['max_auth_tries'] ||= '6'
         
     | 
| 
      
 89 
     | 
    
         
            +
            # node['openssh']['server']['max_sessions'] ||= '10'
         
     | 
| 
      
 90 
     | 
    
         
            +
            # node['openssh']['server']['r_s_a_authentication'] ||= 'yes'
         
     | 
| 
      
 91 
     | 
    
         
            +
            # node['openssh']['server']['pubkey_authentication'] ||= 'yes'
         
     | 
| 
      
 92 
     | 
    
         
            +
            # node['openssh']['server']['authorized_keys_file'] ||= '%h/.ssh/authorized_keys'
         
     | 
| 
      
 93 
     | 
    
         
            +
            # node['openssh']['server']['rhosts_r_s_a_authentication'] ||= 'no'
         
     | 
| 
      
 94 
     | 
    
         
            +
            # node['openssh']['server']['host_based_authentication'] ||= 'no'
         
     | 
| 
      
 95 
     | 
    
         
            +
            # node['openssh']['server']['ignore_user_known_hosts'] ||= 'no'
         
     | 
| 
      
 96 
     | 
    
         
            +
            # node['openssh']['server']['ignore_rhosts'] ||= 'yes'
         
     | 
| 
      
 97 
     | 
    
         
            +
            # node['openssh']['server']['password_authentication'] ||= 'yes'
         
     | 
| 
      
 98 
     | 
    
         
            +
            # node['openssh']['server']['permit_empty_passwords'] ||= 'no'
         
     | 
| 
      
 99 
     | 
    
         
            +
            node['openssh']['server']['challenge_response_authentication'] ||= 'no'
         
     | 
| 
      
 100 
     | 
    
         
            +
            # node['openssh']['server']['kerberos_authentication'] ||= 'no'
         
     | 
| 
      
 101 
     | 
    
         
            +
            # node['openssh']['server']['kerberos_or_localpasswd'] ||= 'yes'
         
     | 
| 
      
 102 
     | 
    
         
            +
            # node['openssh']['server']['kerberos_ticket_cleanup'] ||= 'yes'
         
     | 
| 
      
 103 
     | 
    
         
            +
            # node['openssh']['server']['kerberos_get_afs_token'] ||= 'no'
         
     | 
| 
      
 104 
     | 
    
         
            +
            # node['openssh']['server']['gssapi_authentication'] ||= 'no'
         
     | 
| 
      
 105 
     | 
    
         
            +
            # node['openssh']['server']['gssapi_clean_up_credentials'] ||= 'yes'
         
     | 
| 
      
 106 
     | 
    
         
            +
            node['openssh']['server']['use_p_a_m'] ||= 'yes' unless node['platform_family'] == 'smartos'
         
     | 
| 
      
 107 
     | 
    
         
            +
            # node['openssh']['server']['allow_agent_forwarding'] ||= 'yes'
         
     | 
| 
      
 108 
     | 
    
         
            +
            # node['openssh']['server']['allow_tcp_forwarding'] ||= 'yes'
         
     | 
| 
      
 109 
     | 
    
         
            +
            # node['openssh']['server']['gateway_ports'] ||= 'no'
         
     | 
| 
      
 110 
     | 
    
         
            +
            # node['openssh']['server']['x11_forwarding'] ||= 'no'
         
     | 
| 
      
 111 
     | 
    
         
            +
            # node['openssh']['server']['x11_display_offset'] ||= '10'
         
     | 
| 
      
 112 
     | 
    
         
            +
            # node['openssh']['server']['x11_use_localhost'] ||= 'yes'
         
     | 
| 
      
 113 
     | 
    
         
            +
            # node['openssh']['server']['print_motd'] ||= 'yes'
         
     | 
| 
      
 114 
     | 
    
         
            +
            # node['openssh']['server']['print_last_log'] ||= 'yes'
         
     | 
| 
      
 115 
     | 
    
         
            +
            # node['openssh']['server']['t_c_p_keep_alive'] ||= 'yes'
         
     | 
| 
      
 116 
     | 
    
         
            +
            # node['openssh']['server']['use_login'] ||= 'no'
         
     | 
| 
      
 117 
     | 
    
         
            +
            # node['openssh']['server']['use_privilege_separation'] ||= 'yes'
         
     | 
| 
      
 118 
     | 
    
         
            +
            # node['openssh']['server']['permit_user_environment'] ||= 'no'
         
     | 
| 
      
 119 
     | 
    
         
            +
            # node['openssh']['server']['compression'] ||= 'delayed'
         
     | 
| 
      
 120 
     | 
    
         
            +
            # node['openssh']['server']['client_alive_interval'] ||= '0'
         
     | 
| 
      
 121 
     | 
    
         
            +
            # node['openssh']['server']['client_alive_count_max'] ||= '3'
         
     | 
| 
      
 122 
     | 
    
         
            +
            # node['openssh']['server']['use_dns'] ||= 'yes'
         
     | 
| 
      
 123 
     | 
    
         
            +
            # node['openssh']['server']['pid_file'] ||= '/var/run/sshd.pid'
         
     | 
| 
      
 124 
     | 
    
         
            +
            # node['openssh']['server']['max_startups'] ||= '10'
         
     | 
| 
      
 125 
     | 
    
         
            +
            # node['openssh']['server']['permit_tunnel'] ||= 'no'
         
     | 
| 
      
 126 
     | 
    
         
            +
            # node['openssh']['server']['chroot_directory'] ||= 'none'
         
     | 
| 
      
 127 
     | 
    
         
            +
            # node['openssh']['server']['banner'] ||= 'none'
         
     | 
| 
      
 128 
     | 
    
         
            +
            # node['openssh']['server']['subsystem'] ||= 'sftp /usr/libexec/sftp-server'
         
     | 
| 
      
 129 
     | 
    
         
            +
            node['openssh']['server']['match'] ||= {}
         
     | 
| 
         @@ -0,0 +1,40 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            include_recipe "openssh::attributes"
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            def listen_addr_for(interface, type)
         
     | 
| 
      
 4 
     | 
    
         
            +
              interface_node = node['network']['interfaces'][interface]['addresses']
         
     | 
| 
      
 5 
     | 
    
         
            +
              interface_node.select { |_address, data| data['family'] == type }.keys[0]
         
     | 
| 
      
 6 
     | 
    
         
            +
            end
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            node['openssh']['package_name'].each do |name|
         
     | 
| 
      
 9 
     | 
    
         
            +
              package name
         
     | 
| 
      
 10 
     | 
    
         
            +
            end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            template '/etc/ssh/ssh_config' do
         
     | 
| 
      
 13 
     | 
    
         
            +
              source 'templates/ssh_config.erb'
         
     | 
| 
      
 14 
     | 
    
         
            +
              mode '0644'
         
     | 
| 
      
 15 
     | 
    
         
            +
              owner 'root'
         
     | 
| 
      
 16 
     | 
    
         
            +
              group node['openssh']['rootgroup']
         
     | 
| 
      
 17 
     | 
    
         
            +
            end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            if node['openssh']['listen_interfaces']
         
     | 
| 
      
 20 
     | 
    
         
            +
              listen_addresses = [].tap do |a|
         
     | 
| 
      
 21 
     | 
    
         
            +
                node['openssh']['listen_interfaces'].each_pair do |interface, type|
         
     | 
| 
      
 22 
     | 
    
         
            +
                  a << listen_addr_for(interface, type)
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
              node.set['openssh']['server']['listen_address'] = listen_addresses
         
     | 
| 
      
 27 
     | 
    
         
            +
            end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            template '/etc/ssh/sshd_config' do
         
     | 
| 
      
 30 
     | 
    
         
            +
              source 'templates/sshd_config.erb'
         
     | 
| 
      
 31 
     | 
    
         
            +
              mode node['openssh']['config_mode']
         
     | 
| 
      
 32 
     | 
    
         
            +
              owner 'root'
         
     | 
| 
      
 33 
     | 
    
         
            +
              group node['openssh']['rootgroup']
         
     | 
| 
      
 34 
     | 
    
         
            +
              notifies :restart, 'service[sshd]'
         
     | 
| 
      
 35 
     | 
    
         
            +
            end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            service 'ssh' do
         
     | 
| 
      
 38 
     | 
    
         
            +
              name node['openssh']['service_name']
         
     | 
| 
      
 39 
     | 
    
         
            +
              action [:enable, :start]
         
     | 
| 
      
 40 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,13 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'itamae/plugin/resource/iptables_rule'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'itamae/plugin/resource/iptables_save'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            include_recipe "openssh::default"
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            iptables_rule('accept ssh') do
         
     | 
| 
      
 7 
     | 
    
         
            +
              action :accept
         
     | 
| 
      
 8 
     | 
    
         
            +
              chain "FORWARD"
         
     | 
| 
      
 9 
     | 
    
         
            +
              protocol "tcp"
         
     | 
| 
      
 10 
     | 
    
         
            +
              dport node['openssh']['server']['port']
         
     | 
| 
      
 11 
     | 
    
         
            +
            end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            iptables_save '/etc/iptables.rules'
         
     | 
| 
         @@ -0,0 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # This file was generated by Chef for <%= node['fqdn'] %>
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Do NOT modify this file by hand!
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            <% node['openssh']['client'].each do |key, value| -%>
         
     | 
| 
      
 5 
     | 
    
         
            +
            <%  if value.kind_of? Array -%>
         
     | 
| 
      
 6 
     | 
    
         
            +
            <%    value.each do |item| -%>
         
     | 
| 
      
 7 
     | 
    
         
            +
            <%=     "#{key.split("_").map { |w| w.capitalize}.join} #{item}" %>
         
     | 
| 
      
 8 
     | 
    
         
            +
            <%    end -%>
         
     | 
| 
      
 9 
     | 
    
         
            +
            <%  elsif value.kind_of? Hash -%>
         
     | 
| 
      
 10 
     | 
    
         
            +
            <%=   "Host #{key}"%>
         
     | 
| 
      
 11 
     | 
    
         
            +
            <%    value.each do |host_key, host_value| -%>
         
     | 
| 
      
 12 
     | 
    
         
            +
            <%=     "#{host_key.split("_").map { |w| w.capitalize}.join} #{host_value}" %>
         
     | 
| 
      
 13 
     | 
    
         
            +
            <%    end -%>
         
     | 
| 
      
 14 
     | 
    
         
            +
            <%  else -%>
         
     | 
| 
      
 15 
     | 
    
         
            +
            <%=   "#{key.split("_").map { |w| w.capitalize}.join} #{value}"%>
         
     | 
| 
      
 16 
     | 
    
         
            +
            <%  end -%>
         
     | 
| 
      
 17 
     | 
    
         
            +
            <% end -%>
         
     | 
| 
         @@ -0,0 +1,26 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # This file was generated by Itamae for <%= node['fqdn'] %>
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            <% node['openssh']['server'].dup.reject{|k,v| k=='match'}.map do |key, value| -%>
         
     | 
| 
      
 4 
     | 
    
         
            +
            <%  if value.kind_of? Array -%>
         
     | 
| 
      
 5 
     | 
    
         
            +
            <%    value.each do |item| -%>
         
     | 
| 
      
 6 
     | 
    
         
            +
            <%=     "#{key.split("_").map { |w| w.capitalize}.join} #{item}" %>
         
     | 
| 
      
 7 
     | 
    
         
            +
            <%    end -%>
         
     | 
| 
      
 8 
     | 
    
         
            +
            <%  else -%>
         
     | 
| 
      
 9 
     | 
    
         
            +
            <%=   "#{key.split("_").map { |w| w.capitalize}.join} #{value}"%>
         
     | 
| 
      
 10 
     | 
    
         
            +
            <%  end -%>
         
     | 
| 
      
 11 
     | 
    
         
            +
            <% end -%>
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            <%  unless node['openssh']['server']['match'].empty? || !defined?(node['openssh']['server']['match']) -%>
         
     | 
| 
      
 14 
     | 
    
         
            +
            <%    node['openssh']['server']['match'].sort.map do |match_key, match_items| -%>
         
     | 
| 
      
 15 
     | 
    
         
            +
            Match <%= match_key %>
         
     | 
| 
      
 16 
     | 
    
         
            +
            <%      match_items.sort.map do |key, value| -%>
         
     | 
| 
      
 17 
     | 
    
         
            +
            <%        if value.kind_of? Array -%>
         
     | 
| 
      
 18 
     | 
    
         
            +
            <%          value.each do |item| -%>
         
     | 
| 
      
 19 
     | 
    
         
            +
            <%=           "  #{key.split("_").map { |w| w.capitalize}.join} #{item}" %>
         
     | 
| 
      
 20 
     | 
    
         
            +
            <%          end -%>
         
     | 
| 
      
 21 
     | 
    
         
            +
            <%        else -%>
         
     | 
| 
      
 22 
     | 
    
         
            +
            <%=         "  #{key.split("_").map { |w| w.capitalize}.join} #{value}"%>
         
     | 
| 
      
 23 
     | 
    
         
            +
            <%        end -%>
         
     | 
| 
      
 24 
     | 
    
         
            +
            <%      end -%>
         
     | 
| 
      
 25 
     | 
    
         
            +
            <%    end -%>
         
     | 
| 
      
 26 
     | 
    
         
            +
            <%  end -%>
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,115 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: itamae-plugin-recipe-openssh
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.0
         
     | 
| 
      
 5 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 6 
     | 
    
         
            +
            authors:
         
     | 
| 
      
 7 
     | 
    
         
            +
            - namusyaka
         
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 9 
     | 
    
         
            +
            bindir: exe
         
     | 
| 
      
 10 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2015-06-26 00:00:00.000000000 Z
         
     | 
| 
      
 12 
     | 
    
         
            +
            dependencies:
         
     | 
| 
      
 13 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 14 
     | 
    
         
            +
              name: itamae-plugin-resource-iptables
         
     | 
| 
      
 15 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 16 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 17 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 18 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 19 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 20 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 21 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 22 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 23 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 24 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 25 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 26 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 27 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 28 
     | 
    
         
            +
              name: bundler
         
     | 
| 
      
 29 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 30 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 31 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 32 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 33 
     | 
    
         
            +
                    version: '1.9'
         
     | 
| 
      
 34 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 35 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 36 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 37 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 38 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 39 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 40 
     | 
    
         
            +
                    version: '1.9'
         
     | 
| 
      
 41 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 42 
     | 
    
         
            +
              name: rake
         
     | 
| 
      
 43 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 44 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 45 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 46 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 47 
     | 
    
         
            +
                    version: '10.0'
         
     | 
| 
      
 48 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 49 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 50 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 51 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 52 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 53 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 54 
     | 
    
         
            +
                    version: '10.0'
         
     | 
| 
      
 55 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 56 
     | 
    
         
            +
              name: serverspec
         
     | 
| 
      
 57 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 58 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 59 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 60 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 61 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 62 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 63 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 64 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 65 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 66 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 67 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 68 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 69 
     | 
    
         
            +
            description: itamae recipe plugin for openssh.
         
     | 
| 
      
 70 
     | 
    
         
            +
            email:
         
     | 
| 
      
 71 
     | 
    
         
            +
            - namusyaka@gmail.com
         
     | 
| 
      
 72 
     | 
    
         
            +
            executables: []
         
     | 
| 
      
 73 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 74 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 75 
     | 
    
         
            +
            files:
         
     | 
| 
      
 76 
     | 
    
         
            +
            - ".gitignore"
         
     | 
| 
      
 77 
     | 
    
         
            +
            - ".rspec"
         
     | 
| 
      
 78 
     | 
    
         
            +
            - ".travis.yml"
         
     | 
| 
      
 79 
     | 
    
         
            +
            - Gemfile
         
     | 
| 
      
 80 
     | 
    
         
            +
            - README.md
         
     | 
| 
      
 81 
     | 
    
         
            +
            - Rakefile
         
     | 
| 
      
 82 
     | 
    
         
            +
            - Vagrantfile
         
     | 
| 
      
 83 
     | 
    
         
            +
            - itamae-plugin-recipe-openssh.gemspec
         
     | 
| 
      
 84 
     | 
    
         
            +
            - lib/itamae/plugin/recipe/openssh/attributes.rb
         
     | 
| 
      
 85 
     | 
    
         
            +
            - lib/itamae/plugin/recipe/openssh/default.rb
         
     | 
| 
      
 86 
     | 
    
         
            +
            - lib/itamae/plugin/recipe/openssh/iptables.rb
         
     | 
| 
      
 87 
     | 
    
         
            +
            - lib/itamae/plugin/recipe/openssh/openssh.rb
         
     | 
| 
      
 88 
     | 
    
         
            +
            - lib/itamae/plugin/recipe/openssh/templates/ssh_config.erb
         
     | 
| 
      
 89 
     | 
    
         
            +
            - lib/itamae/plugin/recipe/openssh/templates/sshd_config.erb
         
     | 
| 
      
 90 
     | 
    
         
            +
            - lib/itamae/plugin/recipe/openssh/version.rb
         
     | 
| 
      
 91 
     | 
    
         
            +
            homepage: https://github.com/namusyaka/itamae-plugin-recipe-openssh
         
     | 
| 
      
 92 
     | 
    
         
            +
            licenses: []
         
     | 
| 
      
 93 
     | 
    
         
            +
            metadata: {}
         
     | 
| 
      
 94 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 95 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 96 
     | 
    
         
            +
            require_paths:
         
     | 
| 
      
 97 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 98 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 99 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 100 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 101 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 102 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 103 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 104 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 105 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 106 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 107 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 108 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 109 
     | 
    
         
            +
            rubyforge_project: 
         
     | 
| 
      
 110 
     | 
    
         
            +
            rubygems_version: 2.4.5
         
     | 
| 
      
 111 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 112 
     | 
    
         
            +
            specification_version: 4
         
     | 
| 
      
 113 
     | 
    
         
            +
            summary: itamae recipe plugin for openssh.
         
     | 
| 
      
 114 
     | 
    
         
            +
            test_files: []
         
     | 
| 
      
 115 
     | 
    
         
            +
            has_rdoc: 
         
     |