Linux 4.4.0-34-일반 #53-Ubuntu SMP Wed Jul 27 16:06:39 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
나는 이 스크립트를 사용하여 ssh-agent를 시작하고 다른 스크립트를 시작합니다(사용예상되는상담원에게 비밀번호를 보내주세요.)
#!/bin/bash
eval `ssh-agent -s`
/root/script2
/루트/스크립트2:
#!/usr/bin/expect -f
spawn ssh-add /root/.ssh/key
expect "Enter passphrase for /root/.ssh/key:"
send "passphrase\n";
interact
모든 스크립트는 +x 암호 문구로 100% 유효합니다.
첫 번째 스크립트를 시작한 후 다음을 얻습니다.
Agent pid 3985
spawn ssh-add /root/.ssh/key
Enter passphrase for /root/.ssh/key:
Identity added: /root/.ssh/key (/root/.ssh/key)
보시다시피,에이전트가 시작되었습니다.그리고신원 추가하지만 내가 시도했을 때 "SSH -추가 -l"나는 얻다:
Error connecting to agent: No such file or directory
그러나 프로세스는 여전히 PID 3985로 실행 중입니다. 그게 왜 나한테 말해주는 거야?신원 추가하지만SSH -추가 -l쓸모 없는? :(
좋아, 수동으로 ssh-agent를 평가하고 키 파일을 추가해 보았습니다.
root@:~# eval `ssh-agent -s`
Agent pid 4063
root@:~# ssh-add -l
The agent has no identities.
root@:~# ssh-add /root/.ssh/key
Enter passphrase for /root/.ssh/key:
Identity added: /root/.ssh/key (/root/.ssh/key)
root@:~# ssh-add -l
4096 SHA256:FxPiCFYOiRree0ogNPpo81DTDUqmr1Brlo0LFnFK12o /root/.ssh/key (RSA)
수동으로 실행하려고 하면 왜 작동합니까? 이 문제를 어떻게 해결하나요? PC가 시작될 때 자동으로 시작되도록 rc.local에 추가하고 싶습니다.
UPD 그냥 달리려고 하면스크립트 2수동으로 작동합니다(에이전트에 키가 추가됨). 그래서 문제는 eval sh-agent에 있는 것 같은데 무엇이 잘못되었는지 모르겠습니다.
답변1
먼저 이 문제를 해결해 보겠습니다. 어떤 경우에도 키 expect
에 비밀번호를 입력해서는 안 됩니다 ssh-add
. expect
해킹 방법을 사용하지 않고도 해당 키를 에이전트에 자동으로 추가할 수 있습니다 .
물론 SSH를 통해 특정 작업을 트리거해야 하는 자동화에는 이러한 비밀번호 없는 키만 사용하고 SSH 강제 명령을 사용하여 이러한 키를 호출할 수 있는 작업을 엄격하게 제한합니다.
이제 솔루션이 작동하지 않는 이유는 다음과 같습니다.
#!/bin/bash
eval `ssh-agent -s`
/root/script2
이 스크립트(bash-isms가 없으므로 더 이식성이 높은 것을 사용할 수도 있음 #!/bin/sh
)는 에이전트를 시작하고 해당 세부 정보를 해당 환경에 저장한 다음 다른 스크립트를 실행합니다.그런 다음 종료. 스크립트 실행이 중지되면 에이전트 세부정보가 포함된 환경 변수도 실행이 중지됩니다.
너는 달려야 해
eval `ssh-agent -s`
실제로 프록시 연결 세부 정보를 저장하고 재사용하려는 셸에서.
어쨌든, 당신의 열쇠는 코드가 없기 때문에 정말로 대리인이 필요합니까? 너무 복잡하지 않은 작업:
ssh -i ~/place/where/the/key/lives -l username server restricted-command
이렇게 하면 ssh
클라이언트가 프록시를 통하지 않고 직접 키를 읽을 수 있습니다.
마지막으로 이 모든 작업을 루트로 수행하는 것 같습니다. 정당한 이유가 없는 한,권한이 없는 역할 계정에서 이 모든 작업을 수행하세요..
답변2
비밀번호를 제거하여 개인 키의 보안을 약화시키라는 조언을 따르지 마십시오. Windows와 달리 Linux 변종은 개인 키를 안전하고 영구적으로 저장할 수 있는 ssh-agent 버전을 제공하지 않는 것 같습니다. 이는 매우 불행한 일이지만 이는 잘못된 조언을 따르는 변명의 여지가 없으며 다음을 수행하는 것이 좋습니다. 그렇지 않은 사람은 암호를 제거하십시오. 이와 관련하여 Linux의 실패에 대한 해결책은 없습니다. 여기에는 원하는 것을 달성하는 방법에 대한 많은 예가 있습니다.ssh-agent를 시스템 서비스로 시작하고 사용하는 방법은 무엇입니까?. 다양한 시나리오에 대해 더 좋고 더 심층적인 내용은 다음과 같습니다.비밀번호 프롬프트 없이 ssh-add를 자동으로 실행하는 방법은 무엇입니까?.