237 lines
9.5 KiB
YAML
237 lines
9.5 KiB
YAML
# -*- coding: utf-8 -*-
|
|
# vim: ft=yaml
|
|
---
|
|
# yamllint disable rule:line-length
|
|
# Using a stripped down version of both `sshd_config` and `ssh_config` here
|
|
# The values introduced by the initial commit are taken from the Travis
|
|
# instances themselves
|
|
# Care must be taken when modifying this, not to lock out Travis before the
|
|
# `kitchen verify` stage takes place, resulting in:
|
|
# ```
|
|
# $$$$$$ [SSH] connection failed, terminating (#<Net::SSH::AuthenticationFailed: Authentication failed for user kitchen@localhost>)
|
|
# >>>>>> ------Exception-------
|
|
# >>>>>> Class: Kitchen::ActionFailed
|
|
# >>>>>> Message: 1 actions failed.
|
|
# >>>>>> Failed to complete #verify action: [Transport error, can't connect to 'ssh' backend: SSH session could not be established] on ...
|
|
# ```
|
|
# yamllint enable rule:line-length
|
|
|
|
sshd_config:
|
|
ChallengeResponseAuthentication: 'no'
|
|
X11Forwarding: 'yes'
|
|
PrintMotd: 'no'
|
|
AcceptEnv: "LANG LC_*"
|
|
Subsystem: "sftp /usr/lib/openssh/sftp-server"
|
|
{%- if grains.os != "OpenBSD" %}
|
|
UsePAM: 'yes'
|
|
{%- endif %}
|
|
{#- Need this on various platforms to avoid the `kitchen verify` failure as mentioned above; see: #}
|
|
{#- * https://gitlab.com/saltstack-formulas/infrastructure/salt-image-builder/-/commit/cb6781a2bba9 #}
|
|
{%- if grains.os in ["Arch", "OpenBSD", "Gentoo"] or grains.get("oscodename", "") in ["openSUSE Tumbleweed"] %}
|
|
PubkeyAcceptedAlgorithms: "+ssh-rsa"
|
|
{%- endif %}
|
|
|
|
ssh_config:
|
|
Hosts:
|
|
'*':
|
|
GSSAPIAuthentication: 'yes'
|
|
HashKnownHosts: 'yes'
|
|
SendEnv: 'LANG LC_*'
|
|
|
|
|
|
openssh:
|
|
# Instead of adding a custom banner file you can set it in pillar
|
|
banner_string: |
|
|
Welcome to {{ grains['id'] }}!
|
|
|
|
# Set installed package version
|
|
server_version: latest
|
|
client_version: latest
|
|
|
|
# Controls if SSHD should be enabled/started
|
|
sshd_enable: true
|
|
auth:
|
|
joe-valid-ssh-key-desktop:
|
|
- user: joe
|
|
present: true
|
|
enc: ssh-rsa
|
|
comment: main key - desktop
|
|
source: salt://ssh_keys/joe.desktop.pub
|
|
joe-valid-ssh-key-notebook:
|
|
- user: joe
|
|
present: true
|
|
enc: ssh-rsa
|
|
comment: main key - notebook
|
|
source: salt://ssh_keys/joe.netbook.pub
|
|
joe-non-valid-ssh-key:
|
|
- user: joe
|
|
present: false
|
|
enc: ssh-rsa
|
|
comment: obsolete key - removed
|
|
source: salt://ssh_keys/joe.no-valid.pub
|
|
# Maps users to source files
|
|
# Designed to play nice with ext_pillar
|
|
# salt.states.ssh_auth: If source is set, comment and enc will be ignored
|
|
auth_map:
|
|
personal_keys: # store name
|
|
source: salt://ssh_keys
|
|
users:
|
|
joe:
|
|
joe.desktop: {}
|
|
joe.netbook:
|
|
options: [] # see salt.states.ssh_auth.present
|
|
joe.no-valid:
|
|
present: false
|
|
|
|
generate_dsa_keys: false
|
|
absent_dsa_keys: false
|
|
provide_dsa_keys: false
|
|
dsa:
|
|
private_key: |
|
|
-----BEGIN DSA PRIVATE KEY-----
|
|
NOT_DEFINED
|
|
-----END DSA PRIVATE KEY-----
|
|
public_key: |
|
|
ssh-dss NOT_DEFINED
|
|
|
|
generate_ecdsa_keys: false
|
|
absent_ecdsa_keys: false
|
|
provide_ecdsa_keys: false
|
|
ecdsa:
|
|
private_key: |
|
|
-----BEGIN EC PRIVATE KEY-----
|
|
NOT_DEFINED
|
|
-----END EC PRIVATE KEY-----
|
|
public_key: |
|
|
ecdsa-sha2-nistp256 NOT_DEFINED
|
|
|
|
generate_rsa_keys: false
|
|
generate_rsa_size: 4096
|
|
# Will remove the old key if it is to short and generate a new one.
|
|
enforce_rsa_size: false
|
|
absent_rsa_keys: false
|
|
provide_rsa_keys: false
|
|
rsa:
|
|
private_key: |
|
|
-----BEGIN RSA PRIVATE KEY-----
|
|
NOT_DEFINED
|
|
-----END RSA PRIVATE KEY-----
|
|
public_key: |
|
|
ssh-rsa NOT_DEFINED
|
|
|
|
generate_ed25519_keys: false
|
|
absent_ed25519_keys: false
|
|
provide_ed25519_keys: false
|
|
ed25519:
|
|
private_key: |
|
|
-----BEGIN OPENSSH PRIVATE KEY-----
|
|
NOT_DEFINED
|
|
-----END OPENSSH PRIVATE KEY-----
|
|
public_key: |
|
|
ssh-ed25519 NOT_DEFINED
|
|
|
|
known_hosts:
|
|
# The next 2 settings restrict the set of minions that will be added in
|
|
# the generated ssh_known_hosts files (the default is to match all minions)
|
|
target: '*'
|
|
tgt_type: 'glob'
|
|
# Name of mining functions used to gather public keys and hostnames
|
|
# (the default values are shown here)
|
|
mine_keys_function: public_ssh_host_keys
|
|
mine_hostname_function: public_ssh_hostname
|
|
# List of DNS entries also pointing to our managed machines and that we want
|
|
# to inject in our generated ssh_known_hosts file
|
|
aliases:
|
|
- cname-to-minion.example.org
|
|
- alias.example.org
|
|
# Includes short hostnames derived from the FQDN
|
|
# (host.example.test -> host)
|
|
# (Deactivated by default, because there can be collisions!)
|
|
hostnames: false
|
|
# hostnames:
|
|
# Restrict wich hosts you want to use via their hostname
|
|
# (i.e. ssh user@host instead of ssh user@host.example.com)
|
|
# target: '*' # Defaults to "*.{{ grains['domain']}}"
|
|
# tgt_type: 'glob'
|
|
# To activate the defaults you can just set an empty dict.
|
|
# hostnames: {}
|
|
# Include localhost, 127.0.0.1 and ::1 (default: false)
|
|
include_localhost: false
|
|
# Host keys fetched via salt-ssh
|
|
salt_ssh:
|
|
# The salt-ssh user
|
|
user: salt-master
|
|
# specify public host names of a minion
|
|
public_ssh_host_names:
|
|
minion.id:
|
|
- minion.id
|
|
- alias.of.minion.id
|
|
# specify public host keys of a minion
|
|
public_ssh_host_keys:
|
|
minion.id: |
|
|
ssh-rsa [...]
|
|
ssh-ed25519 [...]
|
|
# Here you can list keys for hosts which are not among your minions:
|
|
static:
|
|
github.com: 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGm[...]'
|
|
gitlab.com: 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsj2bN[...]'
|
|
omit_ip_address:
|
|
- github.com
|
|
|
|
# specify DH parameters (see /etc/ssh/moduli)
|
|
# yamllint disable rule:line-length
|
|
moduli: |
|
|
# Time Type Tests Tries Size Generator Modulus
|
|
20120821045639 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293680B09D63
|
|
20120821045830 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C6042936814C2FFB
|
|
20120821050046 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C60429368214FC53
|
|
20120821050054 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C60429368218E83F
|
|
# yamllint enable rule:line-length
|
|
# ALTERNATIVELY, specify the location of the moduli file. Examples:
|
|
# moduli_source: http://some.server.somewhere/salt/moduli
|
|
# moduli_source: salt://files/ssh/moduli
|
|
# If moduli is specified, moduli_source will be ignored.
|
|
# Also, a proper hash file *must* be included in the same path. E.g.:
|
|
# http://some.server.somewhere/salt/moduli.hash
|
|
# salt://files/ssh/moduli.hash
|
|
# These will be automatically referenced to by the ssh_moduli state.
|
|
|
|
tofs:
|
|
# The files_switch key serves as a selector for alternative
|
|
# directories under the formula files directory. See TOFS pattern
|
|
# doc for more info.
|
|
# Note: Any value not evaluated by `config.get` will be used literally.
|
|
# This can be used to set custom paths, as many levels deep as required.
|
|
# files_switch:
|
|
# - any/path/can/be/used/here
|
|
# - id
|
|
# - role
|
|
# - osfinger
|
|
# - os
|
|
# - os_family
|
|
# All aspects of path/file resolution are customisable using the options below.
|
|
# This is unnecessary in most cases; there are sensible defaults.
|
|
# path_prefix: template_alt
|
|
# dirs:
|
|
# files: files_alt
|
|
# default: default_alt
|
|
source_files:
|
|
manage ssh_known_hosts file:
|
|
- alt_ssh_known_hosts
|
|
sshd_config:
|
|
- alt_sshd_config
|
|
ssh_config:
|
|
- alt_ssh_config
|
|
sshd_banner:
|
|
- fire_banner
|
|
|
|
# Required for openssh.known_hosts
|
|
mine_functions:
|
|
public_ssh_host_keys:
|
|
mine_function: cmd.run
|
|
cmd: cat /etc/ssh/ssh_host_*_key.pub
|
|
python_shell: true
|
|
public_ssh_hostname:
|
|
mine_function: grains.get
|
|
key: id
|