암호없이 자동 ssh-keygen, 어떻게? 않습니다. 이 문제에

ssh-keygen나중에 사용할 pub / private 키 쌍을 호출 하고 만드는 자동화 된 스크립트를 만들고 싶습니다 . 원칙적으로 모든 것이 잘 작동합니다 ….
ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q
… 키를 암호화하는 암호를 요구한다는 것을 제외하고. 이것은 현재 자동화를 어렵게한다.

-N thepassphrase프롬프트가 나타나지 않도록 명령 줄 인수를 통해 암호를 제공 할 수 있습니다 . 여전히 암호화를 통해 키를 안전하게 보호 하고 키 쌍을 일반 텍스트로 사용하고 싶지 않습니다.

이 문제에 대한 최상의 솔루션은 무엇입니까?

-q“자동 / 자동”을 의미 하는 옵션은 여전히 ​​암호문 상호 작용을 피하지 않습니다. 또한 나는 이런 것을 찾지 못했습니다
ssh-keygen ...... -q --no-passphrase

“암호 누락”의 장단점에 대해 설교하거나 강의하지 마십시오. 나는 그것을 알고 있습니다. 스크립트가 아닌 대화 형 형식에서 사용자는 [ENTER]를 두 번 누르기 만하면 키가 일반 텍스트로 저장됩니다. 이것은 다음과 같은 스크립트에서 달성하고자하는 것입니다.

#! / bin / bash

command1
command2
var = $ (명령 3)

# 스크립트를 중지하고 비밀번호를 요구해서는 안됩니다
ssh-kegen -b 2048 -t rsa -f / tmp / sshkey -q



답변

이렇게하면 암호문 프롬프트가 나타나지 않고 키 쌍이 일반 텍스트로 저장되도록 설정됩니다 (물론 모든 단점과 위험이 수반 됨).

ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q -N ""


답변

원하는 것을 수행하는 가장 간단한 방법은 다음과 같습니다 (기본 파일 이름을 사용하는 예).

    cat /dev/zero | ssh-keygen -q -N ""

경우 ~/.ssh/id_rsa파일이 이미 존재하는 명령은 아무것도 수정하지 않고 종료합니다.

그렇지 않은 경우 해당 파일 이름으로 새 키를 얻습니다.

어느 쪽이든, 당신은 아무것도 덮어 쓰지 않았으며 결국 열쇠가 있음을 알고 있습니다.


답변

이것은 나를 위해 일했다 :

ssh-keygen -t rsa -f /home/oracle/.ssh/id_rsa -q -P ""

-P암호 옵션이며, ""빈 암호입니다.


답변

당신은 당신을 위해 “입력”을 보낼 것으로 기대할 수 있습니다

cat test.sh
#!/bin/bash
set -x
XYZ=$(expect -c "
spawn ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q
expect \"Enter passphrase (empty for no passphrase):\"
send \"\r\"
expect \"Enter same passphrase again:\"
send \"\r\"
")

그러나 / tmp / sshkey 파일이 이미 존재하면 명령의 출력이 다르기 때문에 실패합니다.


답변

ssh-keygen 전에 간단한 에코를 수행했습니다. 그래서su - <user> -c "echo |ssh-keygen -t rsa"

이것은 Redhat 6에서 테스트되었습니다


답변

다른 사용자의 경우 Ubuntu 18.04에서 테스트되었습니다.

sudo -u username bash -c "ssh-keygen -f /tmp/sshkey -N ''"


답변