diff --git a/shell/files/terminfo/r/rxvt-unicode-256color b/shell/files/terminfo/r/rxvt-unicode-256color
new file mode 100644
index 0000000000000000000000000000000000000000..2c8b1e354b14511ddb9549c41beee42e11923116
Binary files /dev/null and b/shell/files/terminfo/r/rxvt-unicode-256color differ
diff --git a/shell/files/terminfo/x/xterm-kitty b/shell/files/terminfo/x/xterm-kitty
new file mode 100644
index 0000000000000000000000000000000000000000..4064de55747943010e67b0bd49e9246c48b92e7d
Binary files /dev/null and b/shell/files/terminfo/x/xterm-kitty differ
diff --git a/shell/tasks/shell.yml b/shell/tasks/shell.yml
index 24091f4c0533439e434c065722e27581bee8972e..8c3c62a559964563adcdc2aa4ffbb200254b3027 100644
--- a/shell/tasks/shell.yml
+++ b/shell/tasks/shell.yml
@@ -125,3 +125,35 @@
     - config
     - shell
     - modules
+
+- name: ensure directories for terminfo config files exist
+  file:
+    path: "/etc/terminfo/{{item.path}}"
+    owner: root
+    group: root
+    state: directory
+    mode: 0755
+  with_filetree: terminfo/
+  when: item.state == "directory"
+  loop_control:
+    label: "{{item.path}}"
+  tags:
+    - config
+    - shell
+    - terminfo
+
+- name: ensure strange terminals work well over ssh
+  copy:
+    src: "{{item.src}}"
+    dest: "/etc/terminfo/{{item.path}}"
+    owner: root
+    group: root
+    mode: 0644
+  with_filetree: terminfo/
+  when: item.state == "file"
+  loop_control:
+    label: "{{item.path}}"
+  tags:
+    - config
+    - shell
+    - terminfo