コマンド自体が機能します。
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
次に、逆の順序でリダイレクトと比較します。