원격 서버의 인증된 키에 공개 키를 추가하고 일부 명령을 실행합니다.

원격 서버의 인증된 키에 공개 키를 추가하고 일부 명령을 실행합니다.

명령 자체가 작동합니다.

ssh user@remote 'cat >>/home/user/somedir/.ssh/authorized_keys' <~/.ssh/id_rsa.pub

그래서 나는 이것을 내 스크립트에 통합하려고 시도했습니다.

#! /bin/bash

ssh user@remote 'cat >>/home/user/somedir/.ssh/authorized_keys' <~/.ssh/id_rsa.pub << EOF
    touch hello
    mkdir /test/morning
    cp hello /test/morning
EOF 

목적은 내 파일을 로컬 시스템에서 원격 호스트로 id_rsa.pub복사 한 다음 다른 명령을 실행하는 것입니다. 그러나 위 스크립트를 사용하는 명령은 다음과 같이 authorized_keys파일에 에코됩니다 .authorized_keys

$ cat /home/user/somedir/.ssh/authorized_keys 
    touch hello
    mkdir /test/morning
    cp hello /test/morning
EOF 

누구든지 도와줄 수 있나요?

답변1

찾고 계시는 것 같은데,

cat ~/.ssh/id_rsa.pub | ssh user@remote "mkdir /home/user/somedir/.ssh; \
cat >> /home/user/somedir/.ssh/authorized_keys; touch hello; mkdir /test/morning; \
cp hello /test/morning"

나는 를 사용하는 것을 선호합니다 ssh-copy-id. 원격 주소를 제공하면 authorized_keys원격 시스템의 파일에 공개 키가 추가됩니다.

$ ssh-copy-id user@remote

답변2

이것여기 문서실행하는 명령의 표준 입력을 리디렉션합니다( ssh이 경우). 리디렉션에도 마찬가지입니다 < file. 리디렉션은 왼쪽에서 오른쪽으로 처리되므로 마지막 리디렉션이 적용됩니다. 따라서 cat원격으로 실행하고 여기 문서에서 입력을 받으세요.

다음과 같은 것을 사용해보십시오

echo file > sourcefile
cat <<EOF <sourcefile 
here doc
EOF

그런 다음 역순으로 리디렉션과 비교합니다.

관련 정보