원격 시스템에서 추가 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