sourcetip

프롬프트 없이 ssh-keygen을 실행하는 방법

fileupload 2023. 4. 13. 21:06
반응형

프롬프트 없이 ssh-keygen을 실행하는 방법

Centos7에서 셸 스크립트를 사용하여 SSH 키 쌍을 자동 생성하려고 합니다.

yes "y" | ssh-keygen -t rsa
echo "\n\n\n" | ssh-keygen...
echo | ssh-keygen..

이러한 명령어는 모두 동작하지 않습니다.한 개의 'Enter'를 입력하고 셸 스크립트는 "Enter passphrase (비밀번호가 없는 경우 공백)"에서 정지합니다.셸에서 여러 개의 'Enter'를 연속적으로 시뮬레이트하는 방법을 알고 싶을 뿐입니다.

누가 도와줄 수 있다면 정말 고마워!

다음 두 단계를 자동으로 수행해야 합니다.

  1. 패스프레이즈를 입력합니다.를 사용합니다.-N flag (void string for this example):flag(이 예에서는 문자열 표시):

    ssh-keygen -t rsa -N ''

  2. 파일을 덮어씁니다.

Use 사용하다-f경로(예: 경 력 하 예 에 서 는 example to this (이 로 를 입 다 ( 이 예제에서 경로를 입력합니다.id_rsa)와 함께 다음 질문에 yes라고 대답하는 문자열도 입력합니다.

ssh-keygen -q -t rsa -N '' -f ~/.ssh/id_rsa <<<y >/dev/null 2>&1

Or, under a 또는, 아래의bash셸과 마찬가지로 앞의 것을 확실히 덮어쓰려면 here-string만 사용하여 모든 니즈 입력을 명령어에 입력합니다.

ssh-keygen -q -t rsa -N '' <<< $'\ny' >/dev/null 2>&1

터에서ssh-keygen man 페이지:

  -N new_passphrase provides the new passphrase.
  -q                silence ssh-keygen.
  -f filename       specifies the filename of the key file.

단계별 설명

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/klashxx/.ssh/id_rsa):

1) 키 사용을 피하기 위해-f:

$ ssh-keygen -t rsa -f ~/.ssh/id_rsa
Generating public/private rsa key pair.
/home/klashxx/.ssh/id_rsa already exists.
Overwrite (y/n)?

주의: RSA 파일명에 관계없이 이전 파일명을 덮어쓰는 경우는, 다음의 순서 4 를 확인해 주세요.

2) 덮어쓰기 질문에 자동으로 "y"라고 대답해야 합니다(해당 작업에는 여기 문자열을 사용합니다).

$ ssh-keygen -t rsa -f ~/.ssh/id_rsa <<< y
Generating public/private rsa key pair.
/home/klashxx/.ssh/id_rsa already exists.
Overwrite (y/n)? Enter passphrase (empty for no passphrase):

3) 마지막으로, 델은-N"CHANGE: "CHANGE: "CHANGE: "CHANGE: "CHANGE:

$ ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa <<< y
Generating public/private rsa key pair.
/home/klashxx/.ssh/id_rsa already exists.
Overwrite (y/n)? Your identification has been saved in /home/klashxx/.ssh/id_rsa.
Your public key has been saved in /home/klashxx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Xo0t6caMB/8TSsigxfY28JIfqYjyqxRZrFrPncx5yiU klashxx@server
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|  .              |
|   o .           |
|  +   *    =     |
| +.  + BSo= o    |
|...o.+o+XO...    |
|.. .o.E==+B. .   |
|o . ...=.o...    |
|.+o.  o     ..   |
+----[SHA256]-----+

4) 추가 볼, 출력 청소, 리턴 코드 확인:

$ ssh-keygen -q -t rsa -N '' -f ~/.ssh/id_rsa <<<y >/dev/null 2>&1
$ echo $?
0

이전 RSA 파일을 덮어쓰는 대체 경로(-f 플래그 불필요)

메모: 한정bash개껍껍조

RSA 이름은 신경 쓰지 않고 덮어쓰기만 원하는 경우 다음 두 가지 질문에 자동으로 답변해야 합니다.

  1. 키를 저장할 파일을 입력하십시오. /example/path/.ssh/id_rsa가 이미 있습니다.

  2. 덮어쓰기(y/n)?

이 작업을 수동으로 수행할 경우 첫 번째 질문에는 Enter 키를 누르고 두 번째 질문에는 Enter 키를 누르면 됩니다.y 을 눌러주세요.enter.

다음 문자열을 사용하여 이러한 액션을 시뮬레이트할 수 있습니다.

$'\ny'

bash 페이지 man "display" :

$'string' 형식의 단어는 특별 취급됩니다.단어는 "string"으로 확장되며 ANSI C 표준에 따라 백슬래시가 이스케이프된 문자가 대체됩니다.

\n 새로운 행

이렇게 요'를 쓰면od스트링을 분석하려면

cat - <<< $'\ny' | od -c
0000000  \n   y  \n

질문에 답하는 데 필요한 정보를 얻을 수 있습니다.

포인트 1과 포인트2는 다음과 같이 요약할 수 있습니다.

ssh-keygen -q -t rsa  <<< $'\ny'

마지막 명령어는 다음과 같습니다.

$ ssh-keygen -q -t rsa -N '' <<< $'\ny' >/dev/null 2>&1
$ echo $?
0

쿠도스

@subski, @subski, @subski, @subski-yellow, @yeti 및 이 스레드에 있는 다른 사람들.

의 입력을 는, 파일 출력 플래그 「」를합니다.-f명령어로 이동합니다.

ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa

이렇게 하면 id_rsa 파일이 이미 존재하지 않는 한 사용자에게 입력하라는 메시지가 표시되지 않습니다.

어느 대답도 예상대로 되지 않는다.원하는 동작: 입력을 요구하지 않고 기본 설정(Enter를 스팸으로 발송한 경우 등)으로 ssh-keygen을 실행합니다.

실행할 명령어는 다음과 같습니다.

yes '' | ssh-keygen -N '' > /dev/null

출력을 인쇄하는 경우는, >/dev/disput을 생략합니다.

★★★★
yes y $ 및 spams: ssh-keygen의 키를 .yes ''빈 행spams는 필요한 행입니다..경우 을 -f 할 수 .ssh -f ~/.f/id_id_id이다.anyway)에는 -t 하지 않습니다.rsa는 -t rsa를 사용합니다.패스프레이즈는 stdin(스팸으로 입력)에서 읽어들이지 않고 키보드에서 직접 읽어들이기 때문에 어떤 것도 가로채지 못합니다.따라서 빈 패스프레이즈에는 -N "을 지정해야 합니다.

저는 ssh 명령어를 사용할 때 @Lukasz answer와 @Juan one을 모두 사용해야 했습니다.

ssh -p$SSH_PORT -q joker@$INSTANCE_IP 'yes y | ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa'

도커 파일(From node: 8.13.0), 도커 파일(From node: 8.13.0), 도커 파일(Docker file: From node: 8.13.0).yes 'y' | /usr/bin/ssh-keygen

자세한 예:

yes 'y' | /usr/bin/ssh-keygen -q -N '' -t rsa -f /etc/ssh/ssh_host_rsa_key && \
yes 'y' | /usr/bin/ssh-keygen -q -N '' -t dsa -f /etc/ssh/ssh_host_dsa_key

받아들여진 답변에서도 커스텀파일명을 지정합니다.이 방법은 효과가 있었습니다.

ssh-keygen -t rsa -b 4096 -N '' <<<$'\n'
  • -t rsaRSA를 사용하다
  • -b 4096작성하는 키의 비트수(4096비트)를 지정합니다.
  • -N ''패스 프레이즈를 지정합니다(이 경우는 비어 있습니다).
  • <<<ssh-keygen stdin'ssh-keygen stdin'ssh-keygen stdin'ssh-keygen stdin's.
  • $'\n'줄바꿈($를 사용하여 따옴표로 묶은 문자열로 특수 문자를 해석합니다).

위의 명령어는 빈 패스프레이즈를 가진 4096비트 RSA 키를 만듭니다.묻습니다.Enter file in which to save the key (.../.ssh/id_rsa):에, 회선 「」)이 됩니다\n기본 파일 이름을 자동으로 받아들이기 위해 stdin에 입력됩니다.키가 이미 존재하면 아무 것도 하지 않습니다.

단, 프롬프트 없이 기존 키를 자동으로 덮어쓰려면 다음을 사용합니다(이것이 원래 질문에 대한 실제 답변이지만 읽지 않고 복사하여 붙여넣는 사용자의 의도하지 않은 덮어쓰기를 방지하기 위해 아래에 나와 있습니다).

ssh-keygen -t rsa -b 4096 -N '' <<<$'\ny\n'

ssh-keygen stdout을 정지하려면-q(저소음) 옵션 또는>/dev/null:

ssh-keygen -t rsa -b 4096 -N '' <<<$'\n' >/dev/null

요청을 덮어쓰지 않도록 현재 개인 키를 삭제합니다.

rm -f ~/.ssh/id_rsa && ssh-keygen -m PEM -t rsa -b 4096 -N '' -f ~/.ssh/id_rsa

위에서 수락한 답변에서 나만의 버전을 만들었습니다.

ssh-keygen -q - t rsa - N ' ' -f ~/.ssh/id_rsa < / / dev / null 2 > & cat ~ / . ssh / id _ rsa . pub | pbcopy

자동으로 ssh 키가 생성되고 공개 키가 클립보드에 복사됩니다. --> 그러면 github에 붙여넣기, azure dev...

언급URL : https://stackoverflow.com/questions/43235179/how-to-execute-ssh-keygen-without-prompt

반응형