공개 키는 항상 암호와 keyphrase를 요구했다.


19

NAS에서 공개 키를 사용하는 웹 서버로 SSH를 보내려고합니다. NAS 사용자는 'root'이고 웹 서버 사용자는 'backup'입니다.

모든 권한이 올바르게 설정되어 있고 SSH 연결을 디버깅 할 때 얻을 수있는 권한은 다음과 같습니다. (디버그의 마지막 조금)

debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /root/.ssh/id_dsa.pub
debug1: Server accepts key: pkalg ssh-dss blen 433
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase for key '/root/.ssh/id_dsa.pub':

명령을 사용하고 있습니다 :

ssh -v -i /root/.ssh/id_dsa.pub backup@webserver.com

암호문을 요구한다는 사실은 확실하게 좋은 신호이지만 암호 나 암호를 요구하지 않습니다 (암호문에서 'return'을 누르면 나중에옵니다)

답변:


24

개인 키가 암호화되어 있기 때문에 그게 ...

ssh 에이전트에 키를 추가하려면 다음을 사용하십시오. ssh-add 또는 다음 명령을 사용하여 키에서 암호문 (및 암호문)을 제거하십시오.

ssh-keygen -p -f /root/.ssh/id_dsa -N ''


편집하다

오, 방금 공개 키를 사용하여 인증하려고한다는 것을 깨달았습니다. 개인 키를 사용하고 싶습니다.

ssh -v -i /root/.ssh/id_dsa backup@webserver.com

그리고 절대적으로 확실하게하기 위해 파일의 내용 id_dsa.pub 로 전환 ~backup/.ssh/authorized_keys 웹 서버에. 다음 명령을 사용하여 자동으로 수행 할 수 있습니다.

ssh-copy-id -i /root/.ssh/id_rsa.pub backup@webserver.com

여전히 문제가 발생합니다. 그것은 작동했고 '신분증이 새 암호로 저장되었습니다.'라는 내용으로 나에게 허락했습니다. 다음에 로그인을 시도 할 때 암호문을 묻습니다. 내가 뭘 더 시도해야할지 모르겠다.
Andrew Atkinson

내 업데이트 된 답변 확인 ... 아마도 도움이 될 것입니다 ...
andrekeller

고맙습니다. 공개 키와 공개 키를 비교하려고 시도한 것 같습니다. 암호 문구를 제거 할 필요가 없었습니다.
Andrew Atkinson

인증을 위해 내 술집을 사용하고 있다는 사실 (바보 같은 실수)이 문제였습니다. 감사!
Qix

6

개인 키가 OpenSSH 형식이 아니었을 때 이런 일이 일어났습니다.

나는 원래 PuttyGen을 사용하여 창문에 내 열쇠를 생성했고,이 똑같은 것으로 튀어 오르고 있었다.

PuttyGen에서 키를로드하고 OpenSSH 형식으로 변환하려면 "Conversions"를 클릭하여 문제를 해결할 수있었습니다.


2

몇 가지가 있습니다.

주로 KEY가 암호를 요구하면 키가 생성됩니다. 둘째, 시스템에서 암호를 묻는 메시지가 표시되면 키가 인증되지 않습니다. 의미, 당신은 SSH 키를 재생성 (또는 @ rbtux에 의해 제안 된대로 변경)하고 authorized_keys 파일을 수정해야합니다.

ssh-keygen -t {dsa | rsa} -b {1024 | 2048 | 4096} -C "선택적 주석"-f id_examplekey

중괄호 안의 항목은 옵션, 유형 및 비트 크기입니다 ( "보안"측면에서 dsa & gt; rsa, 4096 & gt; 1024).

그런 다음 공개 키 (.pub)를 authorized_keysauthorized_keys2 파일 (그것은 .pub가 로컬 사용을위한 것이라고 오인하는 것이 일반적이지만 오히려 비교 대상입니다) 그래서 서버의 .ssh 폴더.

$ cat id_examplekey.pub & gt; & gt; authorized_keys {, 2}

마지막으로, 핵심 사용 권한이 있는지 확인해야합니다. chmod 600 id_example 그리고 모든 것을 타이핑하는 것을 줄이기 위해 config 파일을 설정할 수 있습니다 : ~/.ssh/config 당신의 로컬 박스 (골격이라면이 톤을 커스터마이즈 할 수 있습니다) :

Host example.com
    User WHATEVERNAME
    IdentityFile ~/.ssh/id_examplekey

그러나 읽는 디버그의 섹션은 다음과 같습니다 : debug1 : Server accepts key : pkalg ssh-dss blen 433 이것은 키가 수락되었다는 것을 의미하지 않습니까? 나는 패스 프레이즈로 다시 만들었지 만, 여전히 동일합니까? - 나는 아이디어가 없어? 고맙습니다
Andrew Atkinson

@AndrewAtkinson 아래에있는 것처럼 보입니다. from 컴퓨터 (로컬, 클라이언트 등)의 개인 키와 authorized.keys 키가 authorized_keys 파일에 추가되어야합니다. 내 다른 제안은 시간을 절약하는 데 도움이됩니다. D 행운을 빌어 요!
nerdwaller

"주로 키가 암호를 묻는다면 키가 생성됩니다."- 예 - 질문자가 수행 한 작업을 테스트했지만 공개 키를 사용하여 -i를 수행했습니다. $ ssh user@comp -i ~/.ssh/id_rsa.pub 그것은 잘못된 사용 권한과 개인 키가 무시 될 것이라고 말했다. 그래서 나는 id_rsa와 같은 권한을 600으로 변경했으며, 암호문을 요구했다. 공개 키와 개인 키가 모두 암호문으로 생성되지는 않았지만 실제로 공개 키를 지정하면 암호문을 요구합니다.
barlop

2

키 자체가 암호화 되었기 때문에 나에겐 다음 단계를 따랐다.

  • ssh-agent를 시작하십시오 : $ ssh-agent bash
  • 키 관리자에 표준 신원 키를 추가하십시오. $ ssh-add
  • 다른 키를 추가하려면 다음을 수행하십시오. $ ssh-add /location/of/key

현재로드 된 키 목록은 언제든지 검사 할 수 있습니다.

$ ssh-add -l

자세한 내용은 다음에서 얻을 수 있습니다. 링크


1

시험 https://wiki.gentoo.org/wiki/Keychain

랩의 종류입니다. ssh-agentssh-add

장점 : 재부팅하지 않는 한 암호를 반복해서 입력 할 필요가 없습니다. 에서 사용할 수 있습니다. crontab.

도움이 될지도 모른다.


1

OpenSSH v7에서 기본적으로 비활성화되어있는 DSA pubkey를 사용하고 있기 때문일 수 있습니다.

키 쌍을 변경할 수없는 경우 webserver.com의 SSH 데몬에 해당 키 유형을 승인하도록 알리는 것이 좋습니다. /etc/ssh/sshd_config 또는 다음과 같은 라인을 추가하는 동급

PubkeyAcceptedKeyTypes=+ssh-dss

그런 다음 서비스를 다시 시작하십시오.

/etc/init.d/ssh restart                     # or equivalent

0

Mac OSX에서는 다음 명령을 사용하여 개인 키를 키 체인에 추가 할 수 있습니다.

ssh-add -K /path/to/private_key

개인 키가 ~ / .ssh에 저장되고 이름이 id_rsa 인 경우 :

ssh-add -K ~/.ssh/id_rsa

키 체인에 저장된 암호를 묻는 메시지가 나타납니다.


Mac 클라이언트가 작동하는 경우 Linux 클라이언트에서해야 할 일은 무엇입니까?
bbaassssiiee
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.