diff --git a/README.md b/README.md
index 75b1bca..2773d6f 100644
--- a/README.md
+++ b/README.md
@@ -62,6 +62,7 @@ users:
+ **Advanced SSH Algorithm Settings**
You can define the used Key and Kex Algorithm here to. For the default values and some examples for the variables ``sshd__key_algorithmus`` and ``sshd__kex_algorithmus`` have a look into ``defaults/main.yml``.
+ You can disable it by setting ``sshd__manage_key_algorithmus`` and ``sshd__manage_kex_algorithmus`` to ``false``.
+ **force new SSH Features**
diff --git a/defaults/main.yml b/defaults/main.yml
index 6a1a70a..da31856 100644
--- a/defaults/main.yml
+++ b/defaults/main.yml
@@ -26,6 +26,7 @@ sshd__key_types:
# - 'ecdsa'
# - 'dsa' # (do not use!)
+sshd__manage_key_algorithmus: true
sshd__key_algorithmus:
- 'ssh-ed25519-cert-v01@openssh.com'
- 'ssh-ed25519'
@@ -42,6 +43,7 @@ sshd__key_algorithmus:
# - 'rsa-sha2-256'
# - 'ssh-rsa'
+sshd__manage_kex_algorithmus: true
sshd__kex_algorithmus:
- 'curve25519-sha256@libssh.org'
- 'diffie-hellman-group-exchange-sha256'
diff --git a/handlers/main.yml b/handlers/main.yml
index 4631e53..6cf7bc8 100644
--- a/handlers/main.yml
+++ b/handlers/main.yml
@@ -4,4 +4,11 @@
ansible.builtin.systemd:
name: "{{ sshd__service }}"
state: restarted
- when: sshd__service is defined
+ when: sshd__service is defined and ansible_service_mgr == 'systemd'
+
+- name: service restart ssh
+ become: true
+ ansible.builtin.service:
+ name: "{{ sshd__service }}"
+ state: restarted
+ when: sshd__service is defined and ansible_service_mgr != 'systemd'
diff --git a/tasks/keys.yml b/tasks/keys.yml
index bb286de..fe5f4a3 100644
--- a/tasks/keys.yml
+++ b/tasks/keys.yml
@@ -9,6 +9,7 @@
- sshd__manage_key_types | bool
notify:
- systemctl restart ssh
+ - service restart ssh
- name: make sure only the correct keys are available
ansible.builtin.file:
@@ -19,6 +20,7 @@
- "{{ sshd__key_types_list | difference( sshd__key_types ) }}"
notify:
- systemctl restart ssh
+ - service restart ssh
- name: make sure only the correct pubkeys are available
ansible.builtin.file:
@@ -29,3 +31,4 @@
- "{{ sshd__key_types_list | difference( sshd__key_types ) }}"
notify:
- systemctl restart ssh
+ - service restart ssh
diff --git a/tasks/main.yml b/tasks/main.yml
index 96b6dd2..332543c 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -49,3 +49,4 @@
backup: true
notify:
- systemctl restart ssh
+ - service restart ssh
diff --git a/templates/sshd_config.j2 b/templates/sshd_config.j2
index b2d493c..d470406 100644
--- a/templates/sshd_config.j2
+++ b/templates/sshd_config.j2
@@ -16,11 +16,13 @@ AddressFamily any
TCPKeepAlive yes
+{% if sshd__manage_key_algorithmus | bool %}
# Key exchange
{{ 'HostkeyAlgorithms ' }}
{%- for algo in sshd__key_algorithmus -%}
{{ algo }}{{ "," if not loop.last }}
{%- endfor %}
+{% endif %}
{{ 'KexAlgorithms ' }}
{%- for algo in sshd__kex_algorithmus -%}
@@ -58,13 +60,14 @@ HostKey /etc/ssh/ssh_host_{{ key }}_key
{% endfor %}
{%- endif %}
-
+{% if sshd__manage_kex_algorithmus | bool -%}
# HostKeyAlgorithms
# Maybe not available in openssh 6.7
{{ 'HostKeyAlgorithms ' }}
{%- for key in sshd__key_algorithmus -%}
{{ key }}{{ "," if not loop.last }}
{%- endfor %}
+{% endif %}
# Client authentication
diff --git a/vars/main.yml b/vars/main.yml
index 3e12ee4..1882000 100644
--- a/vars/main.yml
+++ b/vars/main.yml
@@ -1,5 +1,5 @@
---
-playbook_version_number: 5001 # should be int
+playbook_version_number: 5002 # should be int
playbook_version_path: 'role-sshd_chaos-bodensee_github.com.version'
sshd__service_var_path: