mirror of
				https://github.com/linuxkit/linuxkit.git
				synced 2025-11-04 06:59:14 +00:00 
			
		
		
		
	Add an sshd container
This is mainly for testing. You can run with something like ``` docker run -v ~/.ssh/id_rsa.pub:/root/.ssh/authorized_keys -p 2222:22 -e TINI_SUBREAPER=1 --pid=host mobylinux/sshd:36c44542d8120e384c724a078e3e489f7a58382c ``` if you want to run in the host pid namespace. You must provide an authorized key, you may provide a host key. Signed-off-by: Justin Cormack <justin.cormack@docker.com>
This commit is contained in:
		
							
								
								
									
										14
									
								
								base/sshd/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								base/sshd/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					FROM alpine:edge
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RUN \
 | 
				
			||||||
 | 
					  apk update && apk upgrade && \
 | 
				
			||||||
 | 
					  apk add --no-cache \
 | 
				
			||||||
 | 
					  openssh-server \
 | 
				
			||||||
 | 
					  tini \
 | 
				
			||||||
 | 
					  && true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					COPY . .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RUN mkdir -p /etc/ssh /root/.ssh && chmod 0700 /root/.ssh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CMD ["/sbin/tini", "/usr/bin/ssh.sh"]
 | 
				
			||||||
							
								
								
									
										29
									
								
								base/sshd/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								base/sshd/Makefile
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					.PHONY: tag push
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BASE=alpine:edge
 | 
				
			||||||
 | 
					IMAGE=sshd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					default: push
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					hash: Dockerfile etc/ssh/sshd_config usr/bin/ssh.sh etc/motd
 | 
				
			||||||
 | 
						DOCKER_CONTENT_TRUST=1 docker pull $(BASE)
 | 
				
			||||||
 | 
						tar cf - $^ | docker build --no-cache -t $(IMAGE):build -
 | 
				
			||||||
 | 
						docker run --rm $(IMAGE):build sh -c "cat $^ /lib/apk/db/installed | sha1sum" | sed 's/ .*//' > $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					push: hash
 | 
				
			||||||
 | 
						docker pull mobylinux/$(IMAGE):$(shell cat hash) || \
 | 
				
			||||||
 | 
							(docker tag $(IMAGE):build mobylinux/$(IMAGE):$(shell cat hash) && \
 | 
				
			||||||
 | 
							 docker push mobylinux/$(IMAGE):$(shell cat hash))
 | 
				
			||||||
 | 
						docker rmi $(IMAGE):build
 | 
				
			||||||
 | 
						rm -f hash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tag: hash
 | 
				
			||||||
 | 
						docker pull mobylinux/$(IMAGE):$(shell cat hash) || \
 | 
				
			||||||
 | 
							docker tag $(IMAGE):build mobylinux/$(IMAGE):$(shell cat hash)
 | 
				
			||||||
 | 
						docker rmi $(IMAGE):build
 | 
				
			||||||
 | 
						rm -f hash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					clean:
 | 
				
			||||||
 | 
						rm -f hash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.DELETE_ON_ERROR:
 | 
				
			||||||
							
								
								
									
										1
									
								
								base/sshd/etc/motd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								base/sshd/etc/motd
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					Welcome to Moby 
 | 
				
			||||||
							
								
								
									
										144
									
								
								base/sshd/etc/ssh/sshd_config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										144
									
								
								base/sshd/etc/ssh/sshd_config
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,144 @@
 | 
				
			|||||||
 | 
					#	$OpenBSD: sshd_config,v 1.98 2016/02/17 05:29:04 djm Exp $
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# This is the sshd server system-wide configuration file.  See
 | 
				
			||||||
 | 
					# sshd_config(5) for more information.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# This sshd was compiled with PATH=/bin:/usr/bin:/sbin:/usr/sbin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#Port 22
 | 
				
			||||||
 | 
					#AddressFamily any
 | 
				
			||||||
 | 
					#ListenAddress 0.0.0.0
 | 
				
			||||||
 | 
					#ListenAddress ::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The default requires explicit activation of protocol 1
 | 
				
			||||||
 | 
					#Protocol 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# HostKey for protocol version 1
 | 
				
			||||||
 | 
					#HostKey /etc/ssh/ssh_host_key
 | 
				
			||||||
 | 
					# HostKeys for protocol version 2
 | 
				
			||||||
 | 
					#HostKey /etc/ssh/ssh_host_rsa_key
 | 
				
			||||||
 | 
					#HostKey /etc/ssh/ssh_host_dsa_key
 | 
				
			||||||
 | 
					#HostKey /etc/ssh/ssh_host_ecdsa_key
 | 
				
			||||||
 | 
					#HostKey /etc/ssh/ssh_host_ed25519_key
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Lifetime and size of ephemeral version 1 server key
 | 
				
			||||||
 | 
					#KeyRegenerationInterval 1h
 | 
				
			||||||
 | 
					#ServerKeyBits 1024
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Ciphers and keying
 | 
				
			||||||
 | 
					#RekeyLimit default none
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Logging
 | 
				
			||||||
 | 
					# obsoletes QuietMode and FascistLogging
 | 
				
			||||||
 | 
					#SyslogFacility AUTH
 | 
				
			||||||
 | 
					#LogLevel INFO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Authentication:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#LoginGraceTime 2m
 | 
				
			||||||
 | 
					#PermitRootLogin prohibit-password
 | 
				
			||||||
 | 
					#StrictModes yes
 | 
				
			||||||
 | 
					#MaxAuthTries 6
 | 
				
			||||||
 | 
					#MaxSessions 10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#RSAAuthentication yes
 | 
				
			||||||
 | 
					#PubkeyAuthentication yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
 | 
				
			||||||
 | 
					# but this is overridden so installations will only check .ssh/authorized_keys
 | 
				
			||||||
 | 
					AuthorizedKeysFile	.ssh/authorized_keys
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#AuthorizedPrincipalsFile none
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#AuthorizedKeysCommand none
 | 
				
			||||||
 | 
					#AuthorizedKeysCommandUser nobody
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
 | 
				
			||||||
 | 
					#RhostsRSAAuthentication no
 | 
				
			||||||
 | 
					# similar for protocol version 2
 | 
				
			||||||
 | 
					#HostbasedAuthentication no
 | 
				
			||||||
 | 
					# Change to yes if you don't trust ~/.ssh/known_hosts for
 | 
				
			||||||
 | 
					# RhostsRSAAuthentication and 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 no to disable s/key passwords
 | 
				
			||||||
 | 
					ChallengeResponseAuthentication no
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Kerberos options
 | 
				
			||||||
 | 
					#KerberosAuthentication no
 | 
				
			||||||
 | 
					#KerberosOrLocalPasswd yes
 | 
				
			||||||
 | 
					#KerberosTicketCleanup yes
 | 
				
			||||||
 | 
					#KerberosGetAFSToken no
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# GSSAPI options
 | 
				
			||||||
 | 
					#GSSAPIAuthentication no
 | 
				
			||||||
 | 
					#GSSAPICleanupCredentials yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Set this to 'yes' to enable PAM authentication, account processing,
 | 
				
			||||||
 | 
					# and session processing. If this is enabled, PAM authentication will
 | 
				
			||||||
 | 
					# be allowed through the ChallengeResponseAuthentication and
 | 
				
			||||||
 | 
					# PasswordAuthentication.  Depending on your PAM configuration,
 | 
				
			||||||
 | 
					# PAM authentication via ChallengeResponseAuthentication may bypass
 | 
				
			||||||
 | 
					# the setting of "PermitRootLogin without-password".
 | 
				
			||||||
 | 
					# If you just want the PAM account and session checks to run without
 | 
				
			||||||
 | 
					# PAM authentication, then enable this but set PasswordAuthentication
 | 
				
			||||||
 | 
					# and ChallengeResponseAuthentication to 'no'.
 | 
				
			||||||
 | 
					#UsePAM no
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#AllowAgentForwarding yes
 | 
				
			||||||
 | 
					#AllowTcpForwarding yes
 | 
				
			||||||
 | 
					#GatewayPorts no
 | 
				
			||||||
 | 
					#X11Forwarding no
 | 
				
			||||||
 | 
					#X11DisplayOffset 10
 | 
				
			||||||
 | 
					#X11UseLocalhost yes
 | 
				
			||||||
 | 
					#PermitTTY yes
 | 
				
			||||||
 | 
					#PrintMotd yes
 | 
				
			||||||
 | 
					#PrintLastLog yes
 | 
				
			||||||
 | 
					#TCPKeepAlive yes
 | 
				
			||||||
 | 
					#UseLogin no
 | 
				
			||||||
 | 
					#UsePrivilegeSeparation sandbox
 | 
				
			||||||
 | 
					#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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Default of no subsystems
 | 
				
			||||||
 | 
					#Subsystem	sftp	/usr/lib/ssh/sftp-server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# the following are HPN related configuration options
 | 
				
			||||||
 | 
					# tcp receive buffer polling. disable in non autotuning kernels
 | 
				
			||||||
 | 
					#TcpRcvBufPoll yes
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					# disable hpn performance boosts
 | 
				
			||||||
 | 
					#HPNDisabled no
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# buffer size for hpn to non-hpn connections
 | 
				
			||||||
 | 
					#HPNBufferSize 2048
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Example of overriding settings on a per-user basis
 | 
				
			||||||
 | 
					#Match User anoncvs
 | 
				
			||||||
 | 
					#	X11Forwarding no
 | 
				
			||||||
 | 
					#	AllowTcpForwarding no
 | 
				
			||||||
 | 
					#	PermitTTY no
 | 
				
			||||||
 | 
					#	ForceCommand cvs server
 | 
				
			||||||
							
								
								
									
										6
									
								
								base/sshd/usr/bin/ssh.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										6
									
								
								base/sshd/usr/bin/ssh.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					KEYS=$(find /etc/ssh -name 'ssh_host_*_key')
 | 
				
			||||||
 | 
					[ -z "$KEYS" ] && ssh-keygen -A >/dev/null 2>/dev/null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exec /usr/sbin/sshd -D
 | 
				
			||||||
		Reference in New Issue
	
	Block a user