Ubuntuサーバが複数のサーバに同時にファイルスクリプトをアップロード
2929 ワード
# ssh-keygen //
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
e0:f6:59:eb:f7:a6:e3:2f:16:39:a2:14:61:31:4a:1f root@LinServ-1
ssh-keygen RSAとDSAの2つの鍵を含む認証鍵を生成、管理、および変換するために使用される.鍵タイプは-tオプションで指定できます.指定されていない場合、デフォルトではSSH-2用のRSAキーが生成されます.
リモート・サーバへのキー・ファイルのコピー
ssh-copy-id -i /root/.ssh/id_rsa 192.168.1.11
0
The authenticity of host '192.168.1.11 (192.168.1.11)' can't be established.
RSA key fingerprint is 6e:34:d4:8c:fb:72:72:3a:49:7a:14:23:20:59:ea:28.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.11' (RSA) to the list of known hosts.
[email protected]'s password: ( 192.168.1.11 root )
Now try logging into the machine, with "ssh '192.168.2.11'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
ssh-copy-id コマンドは、ローカルのssh公開鍵ファイルをリモートホストに対応するアカウントにインストールできます.
スクリプト#スクリプト#
#!/bin/bash
while getopts f: OPT;
do
case $OPT in
f|+f)
files="$OPTARG $files"
;;
*)
echo "usage: `basename $0` [-f hostfile] <from> <to>"
exit 2
esac
done
shift `expr $OPTIND - 1`
if [ "" = "$files" ];
then
echo "usage: `basename $0` [-f hostfile] <from> <to>"
exit
fi
for file in $files
do
if [ ! -f "$file" ];
then
echo "no hostlist file:$file"
exit
fi
hosts="$hosts `cat $file`"
done
for host in $hosts;
do
echo "do $host"
scp $1 root@$host:$2
done
以上のスクリプトの内容を
remotecopy.sh
として保存します.ホストリストファイルの作成
vim hostlist
192.168.1.11
各行にIPアドレスを書いて保存します.
サービス側192.168.1.0でスクリプトを実行
./remotecopy.sh -f /usr/local/hostlist /usr/local/test /usr/local/
/usr/local/hostlist
ホストリストファイルパス/usr/local/test
転送が必要なファイル/usr/local/
クライアントへの送信位置