##
Port 22
-<%= extraports = case @fqdn
- when "paradis.debian.org" then "
-ListenAddress 0.0.0.0:22
-ListenAddress [::]:22
-ListenAddress 5.153.231.31:443
-ListenAddress [2001:41c8:1000:21::21:31]:443
-"
- end
-extraports
-%>
+<% @extraports.each do |port| -%>
+ListenAddress <%= $port %>
+<% end -%>
# Use these options to restrict which interfaces/protocols sshd will bind to
Protocol 2
<%- if has_variable?("has_etc_ssh_ssh_host_ed25519_key") && @has_etc_ssh_ssh_host_ed25519_key -%>
HostKey /etc/ssh/ssh_host_ed25519_key
<% end %>
-UsePrivilegeSeparation yes
+<% if classes.include?("roles::ssh_upload") -%>
+# On ssh upload hosts we have many clients doing ssh connections to us.
+# sshd has - by default - a limit of 10 on the number of currently
+# unauthenticated (or not yet authenticated) connections. Raise that limit.
+MaxStartups 100:30:200
+<% end %>
+
+LogLevel VERBOSE
# Authentication:
PermitRootLogin without-password
UsePAM yes
-AuthorizedKeysFile /etc/ssh/userkeys/%u /var/lib/misc/userkeys/%u /etc/ssh/userkeys/%u.more
+AuthorizedKeysFile /etc/ssh/userkeys/%u /var/lib/misc/userkeys/%u /etc/ssh/userkeys/%u.more /etc/ssh/puppetkeys/%u
PasswordAuthentication no
+<%=
+ allnodeinfo = scope.lookupvar('deprecated::allnodeinfo')
+ out = ''
+ settings = '# Banner "You are coming from a debian.org host."'
+ allnodeinfo.keys.sort.each do |node|
+ next unless allnodeinfo[node].has_key?('ipHostNumber')
+ out += "# Match Address "
+ out += allnodeinfo[node]['ipHostNumber'].collect do |ipnum|
+ if ipnum =~ /:/
+ "#{ipnum}/128"
+ else
+ "#{ipnum}/32"
+ end
+ end.join(',')
+ out += " # #{node}"
+ out += "\n"
+ out += settings
+ out += "\n\n"
+ end
+ out
+%>
+
Match Group sftponly
AllowStreamLocalForwarding no
AllowTCPForwarding no