SSHでリモート先にコマンドを実行させる方法¶
SSHでリモート先に特定のコマンドを実行させる。
コマンドはセミコロン区切りで複数記入できる。- コマンド内容
echo "コマンド1;コマンド2;……" |ssh ユーザ名@ホスト名 /bin/bash
前提条件¶
スクリプトに組み込む場合には、ssh鍵交換を行ってパスワード入力を
求められないようにしておくこと。
- リモート元のサーバで次のコマンドを実行
パスワードは入力しないssh-keygen -t rsa
- 公開鍵をリモート先のサーバに送る
scp /root/.ssh/id_rsa.pub root@リモート先のIP:/root
- リモート先のサーバで次のコマンドを実行
cat /root/id_rsa.pub >> /root/.ssh/authorized_keys rm /root/id_rsa.pub chmod 700 /root/.ssh/ chmod 600 /root/.ssh/authorized_keys
- リモート元で次のコマンドを実行し確認
ssh root@リモート先
補足¶
デフォルト名以外のユーザ名や鍵、ポート番号を指定する場合、リモート元の次のファイルに設定を記入する。
スクリプトでsshコマンドのオプションをすべて指定しているが、途中で仕様変更でポートが変わるとか
鍵ファイルがデフォルト名ではないから別途指定しないといけないとか、そういうときに便利。
* リモート元のssh設定ファイルを変更
<pre>
.ssh/config
--------------------
Host 任意の接続名(ホスト名でなくてもよい)
HostName リモート先ホスト名
user root
Port 22
IdentityFile ~/.ssh/id_rsa
</pre>
* 次の接続名でログインができるようになる
<pre>
ssh 接続名
</pre>