certified_keys 파일에 SSH 키를 어떻게 추가합니까?


185

Amazon EC2에 Ubuntu 서버가 있으며 개발에 사용하며 오늘은 ~/.ssh/authorized_keys파일에서 모든 것을 어리석게 정리했습니다 . 다행히도 SSH가 열려 있으므로 여전히 연결되어 있으며 파일을 수정할 수 있지만 키 파일을 다시 넣으려고하면 작동하지 않습니다. 여전히 로컬 컴퓨터의 서버에서 권한이 거부되었습니다.

authorized_keysssh-rsa로 SSH 키를 추가하고 ssh-rsa를 끄고 시도했습니다. 또한 SSH 키를 모두 한 줄로 만들려고 시도했지만 작동하지 않았습니다.

파일을 다시로드하는 것과 같은 다른 방법이 있습니까?


3
몇 년 후, 이것은 여전히 ​​관련성이 있고 활동적인 것으로 보인다. 총알을 피한 것에 대해 이야기하고 싶었습니다. "행운스럽게 SSH를 열었으므로 여전히 연결되어 있습니다 [..]"-esh! ; dP
Nostromov 2016 년

1
내 생일에 편집 된이 게시물은 2 개월 전에 내 생일에 저를 구했습니다.
ytpillai

답변:


198

서버에서 시작하는 내용 ( 개인 키)으로 파일을 저장 해서는 안됩니다 . 대신 공개 키를 파일에 넣어야 합니다.-----BEGIN RSA PRIVATE KEY-----~/.ssh/authorized_keys

공개 키는 .pub사용하여 생성 될 때 확장자를 ssh-keygen가지며 그 내용은로 시작합니다 ssh-rsa AAAAB3. 이진 형식은 이 질문 에 대한 답변에 설명되어 있습니다.

~/.ssh서버에서 사용 권한은 700이어야합니다. 서버에서 파일 ~/.ssh/authorized_keys의 모드는 600이어야합니다. 클라이언트 측에서 (개인) 키의 사용 권한은 600이어야합니다.

개인 키가 암호로 보호되지 않고 서버에 넣은 경우 새 암호를 생성하는 것이 좋습니다.

ssh-keygen -t rsa

아무도 서버에서 삭제 된 개인 키를 복구 할 수 없다고 확신하면이 단계를 건너 뛸 수 있습니다.

이것이 도움이되지 않으면 ssh더 자세한 정보를위한 옵션으로 실행하십시오 .

ssh -vvv user@example.com

서버 측에서 /var/log/auth.log세부 사항을 검토 할 수 있습니다 .


1
Amazon EC2 서버에서는 개인 키 (key.pem) 만 있으면됩니다. 공개 키가 어디에도 없습니다.
Dave Long

3
@Dave Long : ssh-keygen -t rsa새로 만든 id_rsa.pub파일을 사용하여 새 키를 생성하고 ~/.ssh/authorized_keys서버에 저장해야합니다. 참조 docs.amazonwebservices.com/AWSEC2/latest/UserGuide/...
Lekensteyn

15
@DaveLong : 언제든지 개인 키에서 공개 키를 생성 할 수 있습니다. 다음 명령으로 간단히 수행 할 수 있습니다. ssh-keygen -y -f key.pem > key.pub
Morgan Blackthorne

5
@MorganBlackthorne 사실이지만 원격 소스에서 개인 키를 허용하는 대신 개인 키를 생성하는 것이 좋습니다. 개인 키가 유출되지 않았는지 완전히 확신 할 수 없습니다.
Lekensteyn

2
@Gerrat Fixed².
Lekensteyn

175

원격 컴퓨터에 공개 키를 설치하는 다른 방법 authorized_keys:

cat ~/.ssh/id_rsa.pub | ssh USER@HOST "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

몇 가지 장점 :

  • ssh-copy-id설치할 필요가 없습니다 .

  • 보증 mkdir에 추가하기 전에 작동 id_rsa.pubauthorized_keys.


10
귀하의 답변으로 추가 패키지없이 여러 원격 컴퓨터 에서이 작업을 수행하는 데 도움이되었습니다. 감사합니다.
nol

"~ / .ssh"디렉토리 및 "~ / .ssh / authorized_keys"파일이 올바른 권한으로 생성된다는 보장은 없습니다.
Nick

1
@ Nick, 나는 그 문제가 있었다. 그렇다면 아마도 chmod (700 / folder, 600 / file)로 제대로 작성되지 않은 경우 실제로 존재 여부를 먼저 확인한 다음 추가해야합니까? 그렇다면 아마 하나의 라이너가 될 수 없습니까?
AnneTheAgile

7
@AnneTheAgile @MariusButuc가 mkdir -p ~/.ssh제공 한 답변 의 일부를 변경하면 umask 077 && mkdir -p ~/.ssh제대로 작동하도록하기 위해해야 ​​할 모든 것입니다.
Nick

1
타이 @ 닉! 나는 그것을 줄 것이다.
AnneTheAgile

128

로그인 기반 인증이있는 경우 ssh-copy-id공개 키를 원격 서버에 추가 하는 데 사용 하십시오.

ssh-copy-id user@host

1
그것은 내 클라이언트 컴퓨터 인 Mac에서 유효한 명령이 아닌 것 같습니다.
Dave Long


13
OSX에서 brew로 설치할 수 있습니다 :brew install ssh-copy-id
phil

Macports에서는이 명령을 사용하여 설치할 수 있습니다 sudo port install openssh +ssh_copy_id. 는 +ssh_copy_idssh_copy_id 변형과 OpenSSH를 설치합니다.
Stefan Lasiewski

6
phildawson.tumblr.com의 지침에 따라 신뢰할 수없는 소프트웨어를 루트로 설치하라는 메시지가 표시됩니다. 저자를 신뢰할 수 있다는 것을 알지 못한다면 이것은 매우 위험하고 해킹 당할 수있는 좋은 방법입니다.
Stefan Lasiewski

38
local> scp .ssh/id_dsa.pub remote.com:
local> ssh remote.com
remote> cat id_dsa.pub >> .ssh/authorized_keys
remote> rm id_dsa.pub
remote> exit

16

가장 쉬운 방법은 복사하여 붙여 넣는 것입니다.

먼저 id_rsa.pub이메일 주소로 끝날 때까지 시작 "ssh-rsa"를 포함 하여 로컬 공개 키의 내용을 보거나 복사하십시오 .

cat ~/.ssh/id_rsa.pub

그런 다음 authorized_keys서버에서 편집 하고 클립 보드의 내용을 해당 파일의 다른 키 아래에 붙여 넣습니다.

nano ~/.ssh/authorized_keys

그리고 저장 Ctl+O하고 파일 Ctl+X을 종료하고 SSH 세션을 종료 한 후 exit다시 로그인하여 작동하는지 확인하십시오. 암호를 요구하지 않으면 작동합니다.


5

AWS 인스턴스에 관한 것이기 때문에이 문제에 기여할 수 있다고 생각했으며 모든 답변은 문제가 하드웨어 문제 인 것처럼 Linux 문제로만 취급합니다. 가장 먼저 이해해야 할 것은 EC2 인스턴스를 하드웨어로 취급해서는 안된다는 것입니다. 그것은 당신을 위해 더 많은 일을 만들어 낼 것입니다. 그것들을 휘발성으로 취급하십시오. 사람들이 AWS를 사용하는 것을 보는 가장 큰 장애물입니다. 인스턴스의 AMI를 만들고 필요한 키를 새 인스턴스에 주입하십시오. cloud-init가이를 처리합니다. 더 자세하게는 원본의 AMI에서 새 인스턴스를 생성 할 때 올바른 공개 키를 사용하기 만하면됩니다. 승인 된 답변의 의견과 같이 자체 펍 및 pem 파일의 키 페어를 생성하려는 경우 AWS는 EC2에서 사용하기 위해 퍼블릭 키를 업로드하는 옵션을 제공합니다.

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#how-to-generate-your-own-key-and-import-it-to-aws


3

공개 키를 저장 한 후 개인 키를 PC의 디렉토리 및 파일에 저장해야합니다. 퍼티의 ssh의 인증 섹션에서 데스크탑에 저장 한 개인 키 파일을 가리켜 야합니다. 작동합니다. 그것은 나를 위해 작동합니다.


1
Windows 콘솔에 모든 ssh 기능이 인터프리터에 추가 될 수 있다면 좋을 것입니다.
Dennis

2

원격 컴퓨터에서 키를 넣을 쉘을 가져온 다음이 one-liner를 실행하여 필요한 파일과 디렉토리를 생성하고 권한을 설정하고 키를 파일에 추가 할 수 있습니다. 물론 KEYGOESHERE아래 부분과 그 이후의 설명 을 변경해야 합니다.

mkdir -p ~/.ssh && chmod 700 ~/.ssh && touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && echo "ssh-rsa KEYGOESHERE user@remotehost or note" >> ~/.ssh/authorized_keys

1

다음은 텍스트 파일에 공개 키 파일 이름 목록이있을 수 있고 많은 공개 키 파일이 동일한 디렉토리에있는 변형입니다.

이 변형은 가져올 공개 키 파일 목록을 제공하는 경우 유용 할 수 있습니다.

$ for i in $(cat ListOfPubKeyFiles.txt) ; do cat $i | ssh User@Hostname "cat >> ~/.ssh/authorized_keys"; done
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.