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

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

원격 시스템에서 추가 sshd 프로세스를 시작하려고 했습니다. 사용하려는 새 sshd 프로필로 작업 디렉터리를 만들었습니다.

이 디렉터리의 구성 파일을 사용하여 sshd를 실행하려고 하면 호스트 키를 찾을 수 없다는 메시지가 나타납니다. 작업 디렉토리의 위치를 ​​지정하는 스위치를 실행하여 누락된 호스트 키를 생성하려고 시도했지만 ssh-keygen ssh-keygen -A은 계속해서 내가 지정한 디렉토리 -f에 키를 배치하려고 시도합니다 . /etc/ssh//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모든 기본 키 유형( , 및 ) ecdsa에 대한 호스트 키가 ed25519아직 없는 경우 생성합니다. 호스트 키는 기본 키 파일 경로, 빈 비밀번호, 키 유형의 기본 비트 및 기본 설명을 사용하여 생성됩니다. 또한 지정하는 경우 -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

관련 정보