공개 키를 SSH 서버에 복사하는 방법은 무엇입니까?

공개 키를 SSH 서버에 복사하는 방법은 무엇입니까?

이것이 내가 시도한 것이지만 오류가 발생합니다.

$ cat /home/tim/.ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'
Password: 
cat: >>: No such file or directory
cat: .ssh/authorized_keys: No such file or directory

답변1

OpenSSH에는 이를 수행하는 명령이 제공됩니다 . 원격 주소를 제공하기만 하면 원격 시스템의 파일 ssh-copy-id에 공개 키가 추가됩니다 .authorized_keys

$ ssh-copy-id [email protected]

-i로컬 컴퓨터에서 공개 키를 찾으려면 이 플래그를 사용해야 할 수도 있습니다 .

$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

답변2

언제든지 다음과 같이 할 수 있습니다.

scp ~/.ssh/id_rsa.pub [email protected]:/tmp/id_rsa.pub
ssh [email protected] 
cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys

cat로컬 컴퓨터에서 SSH 세션에 들어갈 수 있는지 잘 모르겠습니다 . 제안된 대로 /tmp로 이동하세요.

편집: 이것이 정확히 ssh-copy-id수행된 작업입니다. 마이클이 말했듯이.

답변3

이 답변은 질문에 표시된 의도한 방식을 작동시키는 방법을 설명합니다.

>>리디렉션 연산자의 특별한 의미를 해석하기 위해 원격 시스템에서 쉘을 실행할 수 있습니다 .

ssh [email protected] sh -c "'cat >> .ssh/authorized_keys'" < /home/tim/.ssh/id_rsa.pub

리디렉션 연산자는 >>일반적으로 셸에서 해석됩니다.

실행 시 쉘에서 해석된다는 ssh host 'command >> file'보장은 없습니다 command >> file. 귀하의 경우에 command >> file실행됩니다대신에쉘은 특별한 설명 없이 실행되며 쉘 내에서 실행되는 것과 동일한 방식 >>으로 명령에 대한 인수로 제공됩니다 .command '>>' file

; > >>SSH의 일부 버전(OpenSSH_5.9)은 자동으로 원격 서버의 셸을 호출하고 셸 등에서 해석할 토큰을 감지하면 명령을 전달합니다.

답변4

openssh제공합니다 ssh-copy-id. 순서는 다음과 같습니다.

  • 괜찮은 4K 키 생성

    ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa4k
    
  • ssh-agent를 시작하고 SSH_AGENT_PID등과 같은 정보를 흡수하십시오.

    ssh-agent -s > ~/mysshagent
    source ~/mysshagent
    rm ~/mysshagent
    
  • 이제 SSH 에이전트에 키 로드를 시작하세요.

    ssh-add ~/.ssh/id_rsa4k
    
  • 로드되었는지 확인

    ssh-add -l
    ssh-add -L
    

    그러면 ssh-agent의 내용이 표시됩니다.

  • 이제 실제로 SSH를 통해 원격 시스템에 연결합니다.

    ssh [email protected]
    
  • 이제 매개변수 없이 ssh-copy-id를 실행할 수 있습니다.

    ssh-copy-id
    

    그러면 ~/.ssh/authorized_keysssh-agent에 필요한 기본 정보가 생성되고 채워집니다.

관련 정보