Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

image-tools: T5789: copy ssh host keys on image update #2552

Merged
merged 1 commit into from Nov 30, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
20 changes: 20 additions & 0 deletions src/op_mode/image_installer.py
Expand Up @@ -20,6 +20,7 @@
from argparse import ArgumentParser, Namespace
from pathlib import Path
from shutil import copy, chown, rmtree, copytree
from glob import glob
from sys import exit
from time import sleep
from typing import Union
Expand Down Expand Up @@ -435,6 +436,17 @@ def migrate_config() -> bool:
return False


def copy_ssh_host_keys() -> bool:
"""Ask user to copy SSH host keys

Returns:
bool: user's decision
"""
if ask_yes_no('Would you like to copy SSH host keys?', default=True):
return True
return False


def cleanup(mounts: list[str] = [], remove_items: list[str] = []) -> None:
"""Clean up after installation

Expand Down Expand Up @@ -698,6 +710,14 @@ def add_image(image_path: str, no_prompt: bool = False) -> None:
chmod_2775(target_config_dir)
Path(f'{target_config_dir}/.vyatta_config').touch()

target_ssh_dir: str = f'{root_dir}/boot/{image_name}/rw/etc/ssh/'
if no_prompt or copy_ssh_host_keys():
print('Copying SSH host keys')
Path(target_ssh_dir).mkdir(parents=True)
host_keys: list[str] = glob('/etc/ssh/ssh_host*')
for host_key in host_keys:
copy(host_key, target_ssh_dir)

# copy system image and kernel files
print('Copying system image files')
for file in Path(f'{DIR_ISO_MOUNT}/live').iterdir():
Expand Down