SSH 키를 다른 컴퓨터에 복사하는 가장 쉬운 방법은 무엇입니까?


342

집에 게으 르며 집 컴퓨터에 암호 인증을 사용합니다. 키 기반 인증으로 이동할 준비가되었습니다. 웹에서이 작업을 수행하는 방법에 대한 옵션은 많이 있습니다.

키를 복사하는 가장 쉽고 권장되는 방법을 찾고 있는데 Ubuntu ssh 패키지의 어딘가에 편리한 래퍼가 있습니까?

비밀번호 로그인을 차단하는 방법을 이미 알고 있습니다.


답변:


463

openssh-client 패키지 ssh-copy-id에서 명령 이 기본적으로 설치되어 있는 명령은 다음 과 같습니다.

ssh-copy-id user@hostname.example.com

기본 아이디의 공개 키 ( -i identity_file다른 아이디에 사용)를 원격 호스트에 복사합니다 .

기본 아이디는 "표준"ssh 키입니다. 그것은 당신의 두 개의 파일 (공개 키와 개인 키)로 구성 ~/.ssh디렉토리, 일반적으로 이름이 identity, id_rsa, id_dsa, id_ecdsa또는 id_ed25519(그리고와 같은 .pub), 키의 종류에 따라. 하나 이상의 ssh 키를 작성하지 않은 경우 ID 지정에 대해 걱정할 필요가 없습니다. ssh-copy-id는 자동으로 선택합니다.

아이디가없는 경우 도구를 사용하여 아이디를 생성 할 수 있습니다 ssh-keygen.

또한 서버가 기본 포트 ( 22) 와 다른 포트를 사용하는 경우 다음과 같이 따옴표를 사용해야합니다 ( source ).

ssh-copy-id "user@hostname.example.com -p <port-number>"

1
기본 아이디는 무엇입니까?
Oxwivi

17
다른 포트 사용을 위해 :ssh-copy-id "user@host -p 6842"
jibon57

5
복사하려는 원격 서버가 비밀번호 프롬프트를 허용하지 않고 SSH 액세스를 위해 기본적으로 잠겨있는 경우 어떻게해야합니까?
Cyle

10
Mac brew install ssh-copy-id에서는 명령을 수행 한 다음 실행할 수 있습니다 .
Avishai

1
@MarcelStimberg -i 프로필을 포함하도록 답변을 업데이트하십시오. 사람들은 아마도 하나 이상의 키를 가지고 그들 모두를 밀어 붙이거나 주석에서 -i 옵션을
Nick

129

나는 Marcel의 대답을 좋아합니다. 나는이 명령을 몰랐다. 나는 항상 Oracle 웹 사이트 에서 찾은 것을 사용했습니다 .

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"'

쉘 코드 에서의 힘 으로 달성 할 수있는 것을 잘 보여주기 때문에 여전히 여기에 게시하려고 생각했습니다 ssh. 그러나를 사용하는 ssh-copy-id것이 올바르게 수행하는 가장 안전한 방법입니다!

폴더 .ssh가 존재하지 않으면 위의 명령이 실패합니다. 또한 최소한의 사용 권한을 설정하기 위해 파일을 만들 때 더 좋습니다 (기본적으로 소유자의 경우 읽기 / 쓰기 만 가능). 보다 고급 명령은 다음과 같습니다.

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'

2
이 정확한 명령은 Mac에서도 작동합니다
Mihai P.

쉘이 많은 유닉스에서 작동합니다. 폴더 .ssh가 원격에 존재하지 않는 경우 업데이트 된 명령으로 게시물을 업데이트했습니다 .
Huygens

1
(가) cat필요하지 않습니다 - 일반 입력 리디렉션이 충분하다, 예를 들면< ~/.ssh/id_rsa.pub | ssh ...
maxschlepzig

@Huygens 감사합니다. 아무것도 설치할 필요가 없으며 고급 예제에서 설명한 서버 측 권한 변경과 같은 외부 명령을 실행하는 데 유용 할 수 있기 때문에이 점을 기억하는 것이 더 유용합니다.
Jonathan Komar

2
왜 이렇게 ssh를 사용할 수 있기 때문에이 방법을 선호합니까? 왜 일이 깨진 지 알아내는 데 도움이됩니다. sshcopyid는 멈 췄고 결코 작동하지 않았습니다.
사이렌

31

그래픽 방법

  1. 응용 프로그램비밀번호 및 키내 개인 키를 엽니 다 .
  2. 키를 선택한 다음 원격보안 쉘의 키 구성 을 클릭하십시오 .

SSH 연결을위한 컴퓨터 설정


메뉴에 "암호 및 암호화 키"가 없습니다.
Jorge Castro

어떤 Ubuntu 릴리스를 사용하고 있습니까? Ubuntu 10.04 LTS에서는 기본적으로 사용 가능해야합니다.
ændrük

10.10, 방금 태그를 추가했습니다. Marcel의 답변은 내가 찾고있는 것입니다. 데스크탑 중심의 답변은 +1입니다!
Jorge Castro

4
이 프로그램은 seahorse입니다.
Gilles

1
이 응용 프로그램은 10.10의 시스템-> 환경 설정 메뉴에 있다고 생각합니다 (지금은 확인할 수 없습니다, 10.04에 있습니다)
Huygens

18

Ubuntu에서는 Launchpad에서 키를 가져올 수 있습니다.

ssh-import-id [launchpad account name]

세부 사항 :

  1. 런치 패드 계정이 필요하므로 로그인하거나 계정을 만드십시오.
  2. 로그인 한 후 SSH 키 옆에있는 버튼을 클릭하십시오 .
  3. 해당 필드에 공개 키 파일의 내용을 붙여 넣습니다 (설명 포함). 이러한 키는 다음과 같습니다.

    ssh-rsa AAAAB3Nza .... UyDOFDqJp lekensteyn
    

    여기서 ssh-rsa키가 RSA 키이고 AAAAB3Nza .... UyDOFDqJp실제 키이며 lekensteyn주석 임을 나타냅니다 .

  4. 공개 키 가져 오기 를 눌러 키를 저장하십시오.
  5. 모든 것이 잘 되었다면 SSH 키 아래에 가 표시됩니다 :

패키지 ssh-import-id는 원격에서 액세스해야하는 머신에 설치해야합니다. 이 패키지는 openssh-server권장 패키지이므로 패키지 와 함께 설치됩니다 openssh-server. ssh-import-id클라이언트 시스템에 설치 되었는지 확인한 후 다음을 실행하십시오.

ssh-import-id [launchpad account name]

그러면 MITM 공격으로부터 사용자를 보호하는 HTTPS를 통해 런치 패드 서버에서 공개 키를 다운로드합니다.

우분투 루시드와 그 이전 버전에서는 다음과 같은 방법으로 달성 할 수 있습니다.

wget https://launchpad.net/~[lp acount name]/+sshkeys -O - >> ~/.ssh/authorized_keys && echo >> ~/.ssh/authorized_keys

echo명령은 SSH 키를 사용하여 줄 끝에서 여분의 줄 바꿈을 얻기 위해 필요합니다.


14

맞춤 포트 용

ssh-copy-id -i "user@hostname.example.com -p2222"

-i 스위치 기본값은 ~ / .ssh / id_rsa.pub입니다. 다른 키를 원할 경우 -i 뒤에 키 경로를 입력하십시오.

경고 : -i를 쓰지 않으면 ~ / .ssh에있는 모든 키가 복사됩니다.


1
그 경고에 대해 확신합니까? "-i identity_file-ssh-add (1) 또는 default_ID_file을 통해 ID를 찾는 것이 아니라 identity_file에 포함 된 키만 사용하십시오. 파일 이름이 .pub로 끝나지 않으면 이것이 추가됩니다. 생략하면 default_ID_file이 사용됩니다. "
Yousha Aleayoub

0

ssh-copy-id정확히 그렇게합니다. 왜 여기에 다른 답변 중 일부가 부정확 한 정보를 추가하는지 잘 모르겠습니다. 도움말은 다음을 보여줍니다.

~$ ssh-copy-id -h
Usage: /usr/bin/ssh-copy-id [-h|-?|-f|-n] [-i [identity_file]] [-p port] [[-o <ssh -o options>] ...] [user@]hostname
    -f: force mode -- copy keys without trying to check if they are already installed
    -n: dry run    -- no keys are actually copied
    -h|-?: print this help

CentOS 7.6 서버가있는 Ubuntu 18.04 클라이언트에서 다음을 시도했지만 매력처럼 작동했습니다. 이 예에서는의 사용자 지정 포트를 사용하고 2222에 공개 키를 지정하는 방법을 보여줍니다 .~/.ssh/path-to-rsa.pub

$ ssh-copy-id -i ~/.ssh/path-to-rsa.pub -p 2222 myusername@hostname.tld

명령을 실행하기 전에 실제로 -n마지막에 스위치를 사용 하여 명령이 의도 한대로 작동하는지 확인한 드라 이런을 수행했습니다. 일단 확인하면 -n스위치 없이 위와 같이 명령을 다시 실행했습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.