명령 자체가 작동합니다.
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
그런 다음 역순으로 리디렉션과 비교합니다.