SSH의 ID를 어떻게 영구적으로 추가합니까?


37

ssh-add <key>웹 서버에 ssh해야 할 때마다 실행 해야합니다. ID를 영구적으로 추가하는 방법이 있으므로 각 로그인마다 ID를 계속 추가 할 필요가 없습니까?

편집 : 키는 클라우드 서비스에서 다운로드 한 pem 파일입니다.

답변:


40

normal :과 같이 키를 생성 ssh-keygen한 다음이 키를 원격 서버에 배치하면 키가 ssh-copy-id원격 서버의 승인 된 키 와 동기화됩니다.

ssh-keygen
ssh-copy-id user@host

암호를 묻는 메시지가 표시되면 .pub키를 원격 SSH 서버와 연결하는 데 필요한 모든 단계를 수행하십시오 .

기본적으로 모든 .pub 키를 원격 서버에 복사합니다. 방금 키를 ssh-keygen만들면 문제가되지 않습니다 (단 하나만 있기 때문에!). 그러나 여러 키가있는 경우 -i플래그를 사용하여 특정 키만 복사 할 수 있습니다 .

ssh-copy-id -i ~.ssh/key_name.pub user@host

교체 key_name.pub키의 이름으로.


4
웹 서비스가 키를 생성하여 나에게 제공하는 클라우드 호스팅 서버에 액세스하는 데 ssh에만 노출 된 나 (또는 ​​질문자)와 같은 사람 (제 경우에는 AWS 서버)의 경우이 대답은 어렵습니다. 중요한 배경 조사를하지 않고 이해합니다. 내가 사용한 적이 ssh-keygen또는 ssh-copy-id예를 들어,. 반면에 같은 대답 이 하나 나 지식의 나의 수준을 제공 할 수 있도록 완벽하게 명확하고 유용합니다. 나 같은 무지한 사람들을 돕기 위해 어떤 식 으로든 답을 조정할 것인지의 여부는 당신에게 달려 있습니다. :)
Mark Amery

대답은 새 키를 생성한다고 가정합니다. 키링에 기존 키를 간단히 등록하려면 어떻게해야합니까?
donquixote

@ donquixote : 아래의 user626052 의 답변을 참조하십시오 .
naught101

7

다음 명령으로 ssh 키를 생성 할 수 있습니다.

ssh-keygen

그런 다음 다음을 사용하여 키를 서버에 복사 할 수 있습니다.

ssh serveruser@servername "echo `cat ~/.ssh/id_dsa.pub` >> ~/.ssh/authorized_keys" 

이제 자동으로 웹 서버에 로그인 할 수 있습니다


1
서버에 키를 복사하려면 ssh-copy-id -i ~/.ssh/id_dsa.pub serveruser@servername또는 ~/.ssh/id_rsa.pub각각을 사용하면 됩니다. 실제로, 키 파일에 기본 이름을 사용하면이를 지정할 필요조차 없습니다.
Carsten Thiel

5

이것을 당신의 ~/.bashrc

eval $(ssh-agent)
ssh-add ~/.ssh/where_ever_privake_key_is 

3
이것은 실제 질문에 대한 답변입니다. 다른 하나는 기본 공개 키를 단일 대상 서버에 추가하기 때문에 다른 서버 세트에 대해 두 개 이상의 별도가있는 경우 성가신 일입니다.
naught101

3

키가 암호가없고 ssh가 식별 할 때 ( ~/.ssh/id_dsa또는 ~/.ssh/id_rsa) 찾을 파일 중 하나로 이름이 지정된 경우 에이전트에 키를 추가 할 필요가 없습니다.

그러나. 해당 파일을 도난 당했을 가능성이 가장 적다면 이 ID를 사용하는 서버에 누군가 가 액세스 할 수 있도록 허용했을 것 입니다. 간단히 말해서, 전당포.

IMHO, 암호가없는 개인 키는 나쁜 습관 ~/.ssh/authorized_keys이며 매우 제한적인 환경에서만 사용해야합니다 .


1
ssh-agent는 로그인 한 상태에서 해독 된 개인 키를 유지할 수 있습니다. 활성화 된 경우 그놈 키링은 로그인 암호를 사용할 수도 있습니다. 아, 그리고 ssh-copy-id는 공개 키도 서버에 복사 할 수 있습니다.
Frank

2

ssh-add를 실행할 짧은 쉘 스크립트를 작성하고 다음과 같이 연결하십시오.

ssh-add ~/.ssh/your-key
ssh user@remotehost

그런 다음 하나의 명령으로 호스트에 ssh 할 수 있습니다.


1

AWS의 경우 pem 키를 다운로드하고 다음을 실행하십시오.

ssh-add /path/to/pemfile.pem

그것은 나를 위해 일했습니다, 우분투 18.04. 출처 , 그 밖의 아무것도 필요하지 않았습니다.

NB : 그러나이를 수행하기 전에 권한을 400으로 설정하는 것이 중요합니다.

chmod 400 /path/to/pemfile.pem

그렇지 않으면 오류가 발생합니다.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @
경고 : 보호되지 않은 개인 키 파일! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@ '/home/toing_toing/blablabla.pem'에 대한 권한 0664가 너무 열려 있습니다. 다른 사람이 개인 키 파일에 액세스 할 수 없어야합니다. 이 개인 키는 무시됩니다.



-2

Amazon Cloud에 대해 이야기하고 있습니까? ~ / .bashrc에서 환경 변수를 만듭니다.

# Amazon
export EC2_PRIVATE_KEY=$HOME/Keys/pk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem
export EC2_CERT=$HOME/Keys/cert-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/

예, 클라우드에 대해 이야기하지만 인스턴스에 ssh하기위한 키 페어이며 api-tools를 사용하려면 위의 환경 변수가 필요합니다. :)
theTuxRacer

승인. 따라서 암호없이 'ssh-keygen -t rsa'로 RSA 키를 생성 한 다음 생성 된 공개 키 (~ / .ssh / id_dsa.pub)를 원격 서버의 ~ / .ssh / authorized_keys 파일에 연결하십시오. 이것을 달성하기위한 하나의 라이너가 많은 사람들에 의해 주어졌습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.