이것이 내가 시도한 것이지만 오류가 발생합니다.
$ 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_keys
ssh-agent에 필요한 기본 정보가 생성되고 채워집니다.