commit 7f2f5ad1ae200b020d498ede35a372684f856331 Author: Mateo Date: Tue Jul 16 09:37:27 2024 +0200 First commit diff --git a/inventory.ini b/inventory.ini new file mode 100644 index 0000000..d161b65 --- /dev/null +++ b/inventory.ini @@ -0,0 +1,2 @@ +[athelas] +vps ansible_host=95.217.153.90 ansible_connection=ssh ansible_user=motysten diff --git a/setup_ssh.yml b/setup_ssh.yml new file mode 100644 index 0000000..378c017 --- /dev/null +++ b/setup_ssh.yml @@ -0,0 +1,40 @@ +- name: Configure SSH + hosts: athelas + tasks: + + - name: Generate RSA4096 SSH key + community.crypto.openssh_keypair: + path: "~/ssh_key" + size: 4096 + + - name: Get SSH Key + ansible.builtin.fetch: + dest: "~/ansible/keys" + src: "~/ssh_key" + + - name: Copy new SSH configuration + ansible.builtin.template: + src: "templates/sshd_config.j2" + dest: "/etc/ssh/sshd_config" + + - name: Generate password + ansible.builtin.command: openssl rand -base64 12 + register: rand + + - name: Create new user + ansible.builtin.user: + name: "test" + groups: "sudo" + append: true + password: "{{ rand.stdout | password_hash('sha512') }}" + become: true + + - name: Display new user's password + ansible.builtin.debug: + msg: "New password is {{ rand.stdout }}" + + - name: Add SSH public key to remote host + ansible.builtin.authorized_key: + user: "test" + key: "{{ lookup('file', '~/ssh_key') }}" + become: true diff --git a/templates/sshd_config.j2 b/templates/sshd_config.j2 new file mode 100644 index 0000000..203b31f --- /dev/null +++ b/templates/sshd_config.j2 @@ -0,0 +1,122 @@ + +# This is the sshd server system-wide configuration file. See +# sshd_config(5) for more information. + +# This sshd was compiled with PATH=/usr/local/bin:/usr/bin:/bin:/usr/games + +# The strategy used for options in the default sshd_config shipped with +# OpenSSH is to specify options with their default value where +# possible, but leave them commented. Uncommented options override the +# default value. + +Include /etc/ssh/sshd_config.d/*.conf + +#Port 22 +#AddressFamily any +#ListenAddress 0.0.0.0 +#ListenAddress :: + +#HostKey /etc/ssh/ssh_host_rsa_key +#HostKey /etc/ssh/ssh_host_ecdsa_key +#HostKey /etc/ssh/ssh_host_ed25519_key + +# Ciphers and keying +#RekeyLimit default none + +# Logging +#SyslogFacility AUTH +#LogLevel INFO + +# Authentication: + +#LoginGraceTime 2m +PermitRootLogin no +#StrictModes yes +MaxAuthTries 3 +MaxSessions 1 + +#PubkeyAuthentication yes + +# Expect .ssh/authorized_keys2 to be disregarded by default in future. +#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 + +#AuthorizedPrincipalsFile none + +#AuthorizedKeysCommand none +#AuthorizedKeysCommandUser nobody + +# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts +#HostbasedAuthentication no +# Change to yes if you don't trust ~/.ssh/known_hosts for +# HostbasedAuthentication +#IgnoreUserKnownHosts no +# Don't read the user's ~/.rhosts and ~/.shosts files +#IgnoreRhosts yes + +# To disable tunneled clear text passwords, change to no here! +PasswordAuthentication no +PermitEmptyPasswords no + +# Change to yes to enable challenge-response passwords (beware issues with +# some PAM modules and threads) +KbdInteractiveAuthentication no + +# Kerberos options +#KerberosAuthentication no +#KerberosOrLocalPasswd yes +#KerberosTicketCleanup yes +#KerberosGetAFSToken no + +# GSSAPI options +#GSSAPIAuthentication no +#GSSAPICleanupCredentials yes +#GSSAPIStrictAcceptorCheck yes +#GSSAPIKeyExchange no + +# Set this to 'yes' to enable PAM authentication, account processing, +# and session processing. If this is enabled, PAM authentication will +# be allowed through the KbdInteractiveAuthentication and +# PasswordAuthentication. Depending on your PAM configuration, +# PAM authentication via KbdInteractiveAuthentication may bypass +# the setting of "PermitRootLogin prohibit-password". +# If you just want the PAM account and session checks to run without +# PAM authentication, then enable this but set PasswordAuthentication +# and KbdInteractiveAuthentication to 'no'. +UsePAM yes + +#AllowAgentForwarding yes +#AllowTcpForwarding yes +#GatewayPorts no +X11Forwarding yes +#X11DisplayOffset 10 +#X11UseLocalhost yes +#PermitTTY yes +PrintMotd no +#PrintLastLog yes +#TCPKeepAlive yes +#PermitUserEnvironment no +#Compression delayed +#ClientAliveInterval 0 +#ClientAliveCountMax 3 +#UseDNS no +#PidFile /run/sshd.pid +#MaxStartups 10:30:100 +#PermitTunnel no +#ChrootDirectory none +#VersionAddendum none + +# no default banner path +#Banner none + +# Allow client to pass locale environment variables +AcceptEnv LANG LC_* + +# override default of no subsystems +Subsystem sftp /usr/lib/openssh/sftp-server + +# Example of overriding settings on a per-user basis +#Match User anoncvs +# X11Forwarding no +# AllowTcpForwarding no +# PermitTTY no +# ForceCommand cvs server