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 ''"