initrd에서 sshd를 실행하기 위한 고정된 솔루션이 있습니까?

initrd에서 sshd를 실행하기 위한 고정된 솔루션이 있습니까?

이것은 주로 Debian/Ubuntu용이지만 솔루션을 서로 적용할 수 있을 만큼 다양한 배포판에 대해 충분히 알고 있다고 생각합니다.

이것이 내 시나리오입니다. 어떤 경우에는 부팅 과정에서 initrd의 셸(일반적으로 busybox)로 이동하게 됩니다. 특히 하드웨어 RAID를 실행할 때마다 새 커널 버전마다 드라이버를 다시 빌드해야 합니다. 완전히 부팅된 시스템처럼 구조 시스템에 액세스할 수 있기를 원합니다.

저는 쉘과 (OpenSSH 또는 dropbear)의 정적 빌드를 initrd에 넣는 것이 가능할 것이라고 생각했고 sshd필요에 따라 조정할 수 있는 기존 솔루션을 찾고 있었습니다.

기존 솔루션이 없다고 가정하면(오랫동안 검색해 왔기 때문에) 가능한 경우 정적 빌드를 사용하거나 라이브러리를 제공하는 것 외에 무엇을 고려해야 합니까? dropbear의 정적 빌드를 간단히 캐시하고 "변환된" OpenSSH 및 원래 호스트 키 /etc/initramfs-tools/hooks와 함께 포함시키는 것이 합리적입니까?sshd_config

답변1

Ubuntu 16.04에는 다음과 같은 패키지가 포함되어 있습니다.dropbear-initramfs이 기능을 제공해야 합니다.

경량 SSH2 서버 및 클라이언트 - initramfs 통합 dropbear는 작은 메모리 환경에서 사용할 수 있을 만큼 작으면서도 일반 용도로 사용할 수 있을 만큼 강력하고 안전하도록 설계된 SSH 2 서버 및 클라이언트입니다.

이는 SSH 2 프로토콜의 필수 기능 대부분과 X11 및 인증 프록시 전달과 같은 추가 기능을 구현합니다.

이 패키지는 initramfs 통합을 제공합니다.

해당 패키지를 설치하는 것 외에도 조정해야 할 유일한 항목은 다음과 같습니다.

  1. DROPBEAR=y내부에서 주석 처리된 내용을 취소합니다./etc/initramfs-tools/conf-hooks.d/dropbear
  2. 기존 호스트 키 변환(아래 참조)
  3. 이를 위해 마운트를 바인딩 하기 로 /etc/initramfs-tools/root/.ssh/authorized_keys선택했습니다./root/.ssh/etc/initramfs-tools/root/.ssh
  4. 마지막으로 update-initramfs -u -k all모든 initrd 이미지를 다시 생성했습니다.

키를 변환하기 위해 다음 명령을 실행했습니다.

/usr/lib/dropbear/dropbearconvert openssh dropbear /etc/ssh/ssh_host_rsa_key /etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key
/usr/lib/dropbear/dropbearconvert openssh dropbear /etc/ssh/ssh_host_dsa_key /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key
/usr/lib/dropbear/dropbearconvert openssh dropbear /etc/ssh/ssh_host_ecdsa_key /etc/initramfs-tools/etc/dropbear/dropbear_ecdsa_host_key

노트:원본 및 대상 파일 이름이 다릅니다. 그러니 여기서는 가정을 하지 마세요. 또한 /usr/lib/dropbear내 것이 아니므 PATH로 실행에 대한 전체 경로를 제공해야 합니다 dropbearconvert.

관련 정보