mirror of
				https://github.com/linuxkit/linuxkit.git
				synced 2025-10-31 18:23:29 +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