aboutsummaryrefslogtreecommitdiffstats
path: root/roles/sshd
diff options
context:
space:
mode:
Diffstat (limited to 'roles/sshd')
-rw-r--r--roles/sshd/tasks/main.yml24
-rw-r--r--roles/sshd/templates/generate_dns.j224
-rw-r--r--roles/sshd/templates/sshd_config.j225
3 files changed, 73 insertions, 0 deletions
diff --git a/roles/sshd/tasks/main.yml b/roles/sshd/tasks/main.yml
new file mode 100644
index 0000000..0969429
--- /dev/null
+++ b/roles/sshd/tasks/main.yml
@@ -0,0 +1,24 @@
+
+# sshd ~~ roles/sshd/tasks/main.yml
+# Create sshd configuration and restart daemon
+
+---
+
+- name: generate sshd configuration
+ template:
+ src: templates/sshd_config.j2
+ dest: /etc/ssh/sshd_config
+ owner: "{{ user_root }}"
+ group: "{{ group_root }}"
+ mode: 0644
+
+- name: restart sshd
+ service:
+ name: sshd
+ state: restarted
+
+- name: check ssh connection
+ wait_for:
+ port: 22
+ delay: 1
+ state: started
diff --git a/roles/sshd/templates/generate_dns.j2 b/roles/sshd/templates/generate_dns.j2
new file mode 100644
index 0000000..5d58ae9
--- /dev/null
+++ b/roles/sshd/templates/generate_dns.j2
@@ -0,0 +1,24 @@
+
+# ssh configuration for dns ~~ ~/.ssh/.config.d/
+# managed by Ansible
+
+{% for h in groups["all"] %}
+{% set h = hostvars[h] %}
+{##}
+{% if h.ip is defined and h.services is defined %}
+{% set _port = h.services | selectattr("name", "equalto", "ssh") | map(attribute="port") | list | join(' ') %}
+{##}
+# {{ h.ansible_host }}
+
+Match originalhost {{ h.ansible_host }} exec "ls /sys/class/net/{{ _i.dcontroller }} && ! ping -c 1 -W 5 {{ h.ip.out }}"
+ HostName {{ h.ip.in }}
+ Port {{ _port }}
+
+Match originalhost {{ h.ansible_host }}
+ HostName {{ h.ip.out }}
+ Port {{ _port }}
+ User root
+
+{% endif %}
+{##}
+{% endfor %}
diff --git a/roles/sshd/templates/sshd_config.j2 b/roles/sshd/templates/sshd_config.j2
new file mode 100644
index 0000000..a11268e
--- /dev/null
+++ b/roles/sshd/templates/sshd_config.j2
@@ -0,0 +1,25 @@
+
+# ssh ~~ /etc/ssh/sshd_config
+# managed by Ansible
+
+# security
+PermitRootLogin yes
+MaxAuthTries 6
+MaxSessions 10
+
+# auth
+AuthorizedKeysFile .ssh/authorized_keys
+PasswordAuthentication no
+PermitEmptyPasswords no
+ClientAliveInterval 180
+
+
+{% if ansible_facts["os_family"] == "OpenBSD" or ansible_facts["os_family"] == "Alpine" %}
+Subsystem sftp /usr/libexec/sftp-server
+{% elif ansible_facts["os_family"] == "Debian" %}
+ChallengeResponseAuthentication no
+UsePAM yes
+PrintMotd no
+UsePrivilegeSeparation sandbox
+Subsystem sftp /usr/lib/ssh/sftp-server
+{% endif %}
remember that computers suck.