Disable SSH server by default
To enable SSH, login on console and run "puzzle-sshcfg enable"
This commit is contained in:
		
							parent
							
								
									2d315fdf26
								
							
						
					
					
						commit
						8d2b414d57
					
				|  | @ -0,0 +1,13 @@ | |||
| # Read config file to see if SSH server must be started. | ||||
| 
 | ||||
| start_ssh=0 | ||||
| 
 | ||||
| if [ -f /var/lib/puzzlefw/cfg/start_ssh.conf ]; then | ||||
|     . /var/lib/puzzlefw/cfg/start_ssh.conf | ||||
| fi | ||||
| 
 | ||||
| if [ "${start_ssh}" -ne 1 ]; then | ||||
|     echo "SSH server disabled in configuration, not starting dropbear." | ||||
|     exit 1 | ||||
| fi | ||||
| 
 | ||||
|  | @ -5,11 +5,32 @@ | |||
| 
 | ||||
| . /opt/puzzlefw/lib/functions.sh | ||||
| 
 | ||||
| # Copy SSH host key from configuration partition. | ||||
| copy_ssh_host_key() { | ||||
| 
 | ||||
|     # If host key exists, do nothing. | ||||
|     [ -f /etc/dropbear/dropbear_ed25519_host_key ] && return | ||||
| 
 | ||||
|     # If /etc/dropbear is a symlink, delete it. | ||||
|     [ -L /etc/dropbear ] && rm /etc/dropbear | ||||
| 
 | ||||
|     # Create directory /etc/dropbear if it does not exist. | ||||
|     mkdir -p /etc/dropbear | ||||
| 
 | ||||
|     # Try to copy SSH host key from configuration files. | ||||
|     if ! cp -p ${CONFIG_DIR}/dropbear_ed25519_host_key /etc/dropbear ; then | ||||
|         echo "WARNING: Failed to load SSH host key from SD card" >&2 | ||||
|     fi | ||||
| 
 | ||||
|     chmod 0600 /etc/dropbear/dropbear_ed25519_host_key || true | ||||
| } | ||||
| 
 | ||||
| case "$1" in | ||||
|   start) | ||||
|     echo "Reading configuration files from SD card ..." | ||||
|     lock_config || exit 1 | ||||
|     read_config || exit 1 | ||||
|     copy_ssh_host_key | ||||
|     ;; | ||||
|   stop|restart|reload) | ||||
|     true | ||||
|  |  | |||
|  | @ -1,41 +0,0 @@ | |||
| #!/bin/sh | ||||
| # | ||||
| # Load SSH host key from SD card. | ||||
| # | ||||
| 
 | ||||
| . /opt/puzzlefw/lib/functions.sh | ||||
| 
 | ||||
| start() { | ||||
| 
 | ||||
|     # If host key exists, do nothing. | ||||
|     [ -f /etc/dropbear/dropbear_ed25519_host_key ] && return | ||||
| 
 | ||||
|     # If /etc/dropbear is a symlink, delete it. | ||||
|     [ -L /etc/dropbear ] && rm /etc/dropbear | ||||
| 
 | ||||
|     # Create directory /etc/dropbear if it does not exist. | ||||
|     mkdir -p /etc/dropbear | ||||
| 
 | ||||
|     # Try to copy SSH host key from configuration files. | ||||
|     if ! cp -p ${CONFIG_DIR}/dropbear_ed25519_host_key /etc/dropbear ; then | ||||
|         echo "WARNING: Failed to load SSH host key from SD card" >&2 | ||||
|         echo "Generating new SSH host key." >&2 | ||||
|         dropbearkey -t ed25519 -f ${CONFIG_DIR}/dropbear_ed25519_host_key.new | ||||
|         sync_config dropbear_ed25519_host_key | ||||
|         cp -p ${CONFIG_DIR}/dropbear_ed25519_host_key /etc/dropbear | ||||
|     fi | ||||
| 
 | ||||
|     chmod 0600 /etc/dropbear/dropbear_ed25519_host_key | ||||
| } | ||||
| 
 | ||||
| case "$1" in | ||||
|   start) | ||||
|     start | ||||
|     ;; | ||||
|   stop|restart|reload) | ||||
|     ;; | ||||
|   *) | ||||
|     echo "Usage: $0 start" | ||||
|     exit 1 | ||||
| esac | ||||
| 
 | ||||
|  | @ -0,0 +1,105 @@ | |||
| #!/bin/sh | ||||
| # | ||||
| # Enable or disable SSH server. | ||||
| # | ||||
| 
 | ||||
| . /opt/puzzlefw/lib/functions.sh | ||||
| 
 | ||||
| # Show current configuration. | ||||
| show() { | ||||
| 
 | ||||
|     start_ssh=0 | ||||
|     if [ -f ${CONFIG_DIR}/start_ssh.conf ]; then | ||||
|         . ${CONFIG_DIR}/start_ssh.conf | ||||
|     fi | ||||
| 
 | ||||
|     if [ "${start_ssh}" -eq 1 ]; then | ||||
|         echo "Current setting: start SSH on boot" | ||||
|     else | ||||
|         echo "Current setting: do not start SSH on boot" | ||||
|     fi | ||||
| 
 | ||||
|     if [ -f ${CONFIG_DIR}/dropbear_ed25519_host_key ]; then | ||||
|         dropbearkey -y -f ${CONFIG_DIR}/dropbear_ed25519_host_key | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| # Generate persistent SSH host key, if necessary. | ||||
| gen_key() { | ||||
| 
 | ||||
|     # Do nothing if host key already exists in config partition. | ||||
|     [ -f ${CONFIG_DIR}/dropbear_ed25519_host_key ] && return | ||||
| 
 | ||||
|     # If no host key exists, generate it. | ||||
|     if [ ! -f /etc/dropbear/dropbear_ed25519_host_key ]; then | ||||
| 
 | ||||
| 	echo "Generating SSH host key ..." | ||||
| 
 | ||||
|         # If /etc/dropbear is a symlink, delete it. | ||||
|         [ -L /etc/dropbear ] && rm /etc/dropbear | ||||
| 
 | ||||
|         # Create directory /etc/dropbear if it does not exist. | ||||
|         mkdir -p /etc/dropbear | ||||
| 
 | ||||
|         # Generate host key. | ||||
|         dropbearkey -t ed25519 -f /etc/dropbear/dropbear_ed25519_host_key | ||||
|     fi | ||||
| 
 | ||||
|     echo "Writing SSH host key to config partition ..." | ||||
| 
 | ||||
|     cp -a /etc/dropbear/dropbear_ed25519_host_key ${CONFIG_DIR}/dropbear_ed25519_host_key.new | ||||
|     sync_config dropbear_ed25519_host_key || exit 1 | ||||
| } | ||||
| 
 | ||||
| # Enable starting SSH server during boot. | ||||
| enable() { | ||||
| 
 | ||||
|     lock_config || exit 1 | ||||
| 
 | ||||
|     gen_key | ||||
| 
 | ||||
|     echo "Enabling SSH server start on boot ..." | ||||
| 
 | ||||
|     echo "start_ssh=1" > ${CONFIG_DIR}/start_ssh.conf.new | ||||
|     sync_config start_ssh.conf || exit 1 | ||||
| } | ||||
| 
 | ||||
| # Disable starting SSH server during boot. | ||||
| disable() { | ||||
| 
 | ||||
|     lock_config || exit 1 | ||||
| 
 | ||||
|     echo "Disabling SSH server start on boot ..." | ||||
| 
 | ||||
|     echo "start_ssh=0" > ${CONFIG_DIR}/start_ssh.conf.new | ||||
|     sync_config start_ssh.conf || exit 1 | ||||
| } | ||||
| 
 | ||||
| case "$1" in | ||||
|   show) | ||||
|     show | ||||
|     ;; | ||||
|   enable) | ||||
|     enable | ||||
|     ;; | ||||
|   disable) | ||||
|     disable | ||||
|     ;; | ||||
|   *) | ||||
|     script="${0##*/}" | ||||
|     cat <<EOF | ||||
| Usage: $script {enable|disable}" | ||||
| 
 | ||||
|   $script show | ||||
|     Show current configuration. | ||||
| 
 | ||||
|   $script enable | ||||
|     Enable starting SSH server during boot. | ||||
| 
 | ||||
|   $script disable | ||||
|     Disable starting SSH server during boot. | ||||
| 
 | ||||
| EOF | ||||
|     exit 1 | ||||
| esac | ||||
| 
 | ||||
		Loading…
	
		Reference in New Issue