dポイントプレゼントキャンペーン実施中!

急にシェルスクリプトを組む事になり、勉強を始めて2週間です。
下記について、調べても分からなかった為、教えてください。

どのようなコマンドを使用すればよいのかや、参考になるサイトがありましたら教えてください。

【概要】
シェルスクリプト内で、SSH接続で他サーバへ接続し他サーバ内で別のシェルスクリプトを実行する。その際にroot権限が必要となる。

【環境】
作業PC:Windows
サーバA:Linux
サーバB:Linux

【スクリプト】
スクリプト1
 格納場所:サーバA
 処理  :スクリプト1、2を実行
スクリプト2
 格納場所:サーバA
 処理  :サーバA内でディレクトリ作成等の作業をしてOK/NGを返却
スクリプト3
 格納場所:サーバB
 処理  :サーバB内でディレクトリ作成等の作業をしてOK/NGを返却

【やりたい事】
1.作業PCからサーバAへSSH接続
2.サーバAでroot権限へスイッチし、スクリプト1を実行
3.スクリプト1は、スクリプト2を実行
4.スクリプト2はディレクトリ作成等の処理を行い、OK/NGを表示
5.スクリプト1は、サーバBへSSH接続
6.スクリプト1は、サーバBでルート権限へスイッチし、スクリプト3を実行
7.スクリプト3はディレクトリ作成等の処理を行い、OK/NGを表示
8.スクリプト1はサーバBからログアウト

A 回答 (3件)

普通にsshでできるはずですが?サーバーA、サーバーBともにopensshはインストールしてありますよね?もし、インストールしていない場合、「Linux openssh インストール」などで検索してみましょう。



sshのマニュアルで、引数に[command]とあるのを見たことありませんか?
http://www.openbsd.org/cgi-bin/man.cgi?query=ssh …

これは、例えば次のコマンドを実行すると、user0としてログインした上でlsを実行します。
$ ssh user0@host ls

同様にscript3.shをroot権限で実行するなら、次で良いでしょう。
$ ssh root@host /where/you/put/script3.sh

ただ、root権限でのログインをするにはサーバーBにてroot権限でのログインを可能とするよう設定を変更する必要があります。
/etc/sshなどにあるsshd_configを編集し、PermitRootLoginを設定してください。
http://www.openbsd.org/cgi-bin/man.cgi?query=ssh …

サーバーBのルート権限が奪取されてもあまり気にしないならここでPermitRootLogin yesとしても良いかもしれませんが、おっしゃるような用途で使う場合、PermitRootLogin forced-commands-onlyと設定するのが普通です。

この作業をするためには当然、ssh-keygenでログインするときに使う公開鍵を作っておき、サーバーBの~root/.ssh/authorized_keysに置いてあると思います。(何を言っているのかわからないなら、「ssh 公開鍵 使い方」などで検索してみてください。)このauthorized_keysで、ログインに使用する公開鍵の前にcommand="/where/you/put/script3.sh"を書いておくと、その公開鍵を使ったログインではscript3.shしか実行できなくなり、より安全です。
http://chihungchan.blogspot.jp/2008/08/restrict- …

あと、これも参考になるかもしれません。
http://oreilly.com/catalog/sshtdg/chapter/ch08.h …

頑張って。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!
ログインはroot以外で行う必要があるんです・・・
今日もお勉強です。

お礼日時:2013/01/26 21:50

>もし、sudoを使用して私がやりたい事の参考になるページをご存知でしたら教えてください。



sudoの使い方調べられましたか?
sudoの設定をしておくだけなので、sudoの設定の仕方も含めた使い方の載ってるサイトならどこでも参考になるかと思います。
    • good
    • 2

ログイン自体はroot以外で行う必要がある場合は、


・sudo を使って実行するスクリプトをroot権限で実行するようにする
・expect を使ってrootにスイッチする
などになるかと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
自分で調べた限りでは、sudo を使うのかな?と思っていました。
しかし、記載するシェルスクリプトのイメージがわかず足踏みしています。
もし、sudoを使用して私がやりたい事の参考になるページをご存知でしたら教えてください。

expect は知りませんでした。
セキュリティ面のメリット・デメリットを含めて調べてみます。

お礼日時:2013/01/26 21:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!