ssh-keygen을 사용하여 SSH 호스트 키를 다시 생성할 때 출력 디렉터리 변경(-f 스위치는 ssh-keygen이 /etc/ssh/에 쓰는 것을 막지 않습니다)

ssh-keygen을 사용하여 SSH 호스트 키를 다시 생성할 때 출력 디렉터리 변경(-f 스위치는 ssh-keygen이 /etc/ssh/에 쓰는 것을 막지 않습니다)

원격 컴퓨터에서 추가 sshd 프로세스를 시작하려고 했습니다. 사용하려는 새 sshd 구성 파일로 작업 디렉토리를 만들었습니다.

이 디렉터리의 구성 파일을 사용하여 sshd를 실행하려고 하면 호스트 키를 찾을 수 없다는 메시지가 나타납니다. 내 작업 디렉토리의 위치를 ​​지정하기 위해 스위치를 실행하여 누락된 호스트 키를 생성하려고 시도했지만 ssh-keygen은 내가 지정한 디렉토리 대신 키를 계속 배치하려고 ssh-keygen -A시도 합니다 . /etc/ssh에 대한 액세스 권한이 없으므로 실패합니다.-f/etc/ssh/

이 경로에 액세스하지 않고 어떻게 이러한 키를 생성할 수 있나요?

답변1

옵션 은 생성하라고 -A알려줍니다 .ssh-keygen호스트 키. 매뉴얼 페이지에 따르면, 의도된 용도는 ssh-keygen다음과 같습니다.

일반적으로 공개 키 인증으로 SSH를 사용하려는 각 사용자는 이를 한 번 실행하여 , 또는
에서 인증 키를 생성 합니다 . ~/.ssh/identity
~/.ssh/id_ecdsa~/.ssh/id_dsa~/.ssh/id_rsa추가적으로, 시스템 관리자는 이를 사용하여 호스트 키를 생성할 수 있습니다.

개요에는 -A다른 옵션 없이 한 줄에 단독으로 나열됩니다.

SYNOPSIS
     ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment]
                [-f output_keyfile]
     ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
     ssh-keygen -i [-m key_format] [-f input_keyfile]
     ssh-keygen -e [-m key_format] [-f input_keyfile]
     ssh-keygen -y [-f input_keyfile]
     ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]
     ssh-keygen -l [-f input_keyfile]
     ssh-keygen -B [-f input_keyfile]
     ssh-keygen -D pkcs11
     ssh-keygen -F hostname [-f known_hosts_file] [-l]
     ssh-keygen -H [-f known_hosts_file]
     ssh-keygen -R hostname [-f known_hosts_file]
     ssh-keygen -r hostname [-f input_keyfile] [-g]
     ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point]
     ssh-keygen -T output_file -f input_file [-v] [-a num_trials] [-K checkpt]
                [-W generator]
     ssh-keygen -s ca_key -I certificate_identity [-h] [-n principals]
                [-O option] [-V validity_interval] [-z serial_number] file ...
     ssh-keygen -L [-f input_keyfile]
     ssh-keygen -A

따라서 (소스를 수정하고 직접 컴파일하는 것을 제외하고) 귀하가 요구하는 것은 의도된 용도가 아닙니다.

추가 자료:

답변2

Thomas가 링크한 매뉴얼 페이지에 따르면 -f이제 ssh-keygen -A파일에 대한 접두어를 지원하고 지정하므로 이 기능이 추가된 것처럼 보입니다.

-A

모든 기본 키 유형( rsa, ecdsaed25519)의 호스트 키가 아직 없는 경우 생성합니다. 호스트 키는 기본 키 파일 경로, 빈 암호, 키 유형에 대한 기본 비트 및 기본 설명을 사용하여 생성됩니다. -f또한 지정된 경우 해당 인수는 결과 호스트 키 파일의 기본 경로에 대한 접두어로 사용됩니다. 이는 /etc/rc새 호스트 키를 생성하는 데 사용됩니다 .

메모etc/ssh실행하기 전에 폴더가 출력 폴더 아래에 존재해야 함ssh-keygen

$ mkdir -p output/etc/ssh

$ ssh-keygen -A -f output
ssh-keygen: generating new host keys: RSA ECDSA ED25519

$ ls output/etc/ssh/
ssh_host_ecdsa_key  ssh_host_ecdsa_key.pub  ssh_host_ed25519_key  ssh_host_ed25519_key.pub  ssh_host_rsa_key  ssh_host_rsa_key.pub

답변3

Docker에 액세스할 수 있는 경우 컨테이너 외부에 있을 새로운 영구 호스트 키를 생성하기 위해 다음을 사용했습니다.

docker run -d --name get_host_keys lscr.io/linuxserver/openssh-server:latest
sleep 5
docker cp get_host_keys:/etc/ssh/. .
rm *config*
docker stop get_host_keys
docker rm get_host_keys

관련 정보