こんにちは。公開鍵の送信を自動化するスクリプトを作成していますが、「echo」または「cat」を使用してもファイルまたは変数をssh経由で送信できません。
答え1
ファイルをリモート サーバーに送信する場合は、 を使用できますscp
。
男のSCPより:
scp はネットワーク上のホスト間でファイルをコピーします。データ転送には ssh(1) を使用し、ssh(1) と同じ認証を使用し、同じセキュリティを提供します。rcp(1) とは異なり、scp は認証に必要な場合にパスワードまたはパスフレーズを要求します。
基本的な使い方:
scp user@origin:/path/to/file user@target:/path/to/file
SERVER
現在のディレクトリから example.txtを、root として認証して example というフォルダーにある同じ名前のリモートに転送するとします。
scp example.txt root@SERVER:/example/example.txt
答え2
公開鍵をリモートサーバーに転送するには、専用のユーティリティがあります。ssh コピー ID。
このタスクを自動化するために使用できるスクリプトは上記にあります:
#!/bin/sh
while read server ; do
timeout 10 ssh-copy-id -i <public_key_path> <user>@$server
done < <list_of_servers.txt>
PS: <> 間の定数を独自の値に置き換えてください。
答え3
次のようにスクリプトで使用して、sshpass
毎回パスワードを入力せずにサーバーにアクセスできます。
sshpass -p 'PASSWORD' ssh USER@SERVER ssh-copy-id USER@SERVER
-f
また、コマンド ラインにパスワードを書きたくない場合は、servers.list というサーバーのリストのファイルにパスワードを書き込むこともできます(どちらの場合もクリア テキストです)。
for SERVER in $(cat servers.list)
do
sshpass -p 'PASSWORD' ssh USER@$SERVER ssh-copy-id USER@$SERVER
done