質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

Q&A

2回答

3277閲覧

SSH forced-commands-onlyで複数のコマンドを実行したい

ma-yu

総合スコア57

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

0グッド

1クリップ

投稿2018/09/06 05:20

編集2018/09/06 06:28

前提・実現したいこと

SSHの"forced-commands-only"機能を活用して、
1つの公開鍵で複数のコマンドを順に実行したい。

発生している問題

forced-commands-only で、公開鍵にcommands="~~~~"と記述をしますよね?

SSHでファイルのコピーをして最後にrebootコマンドを発行したいのですが、
ひとつの公開鍵内で全て実行は可能でしょうか?

該当のソースコード

以下のように公開鍵内に記述した場合、正常に動作するのでしょうか?

commands="SCP A /xxxx" commands="SCP B /xxxx" commands="SCP C /xxxx" commands="reboot"

試したこと

現在触れる環境がなく、確認ができません。

お手数ですが御教授ください。

追記

以下を試しましたがダメでした。
2つのコマンドとして認識されません。

commands="SCP A /xxxx reboot"

また以下を試しましたがダメでした。
公開鍵として認識されなくなりました。

commands="SCP A /xxxx"  commands="reboot"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

複数のコマンドを実行したい場合は、; で繋げて書きます。

commands="scp A /xxxx; scp B /xxxx; scp C /xxxx; reboot" ssh-rsa AAAAB3N...

ただ、私もシェルスクリプトで一つにまとめる事を勧めます。
手順を残したくないとの事ですが、authorized_keysに書かれる上記記述も一種の手順ですよね。
上記手順をシェルスクリプトに書いても、セキュリティ的には違いは無いと思います。

投稿2018/10/01 06:25

doda

総合スコア947

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

forced-commands-only で、公開鍵にcommands="~~~~"と記述をしますよね?

実行したいコマンドを書き連ねたシェルスクリプトを作って、それを指定すればいい気もします。

投稿2018/09/06 05:24

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ma-yu

2018/09/06 05:39

ご回答ありがとうございます。 となると、シェルスクリプトの転送と実行をしたい場合、 commands="シェルスクリプトを本体に転送" commands="シェルスクリプト実行" と2つ必要になるのでしょうか?
maisumakun

2018/09/06 05:43

シェルスクリプトは事前に別ルートで用意しておいて、鍵からは実行するだけ…というように考えていましたが、それではカバーできない動きでしょうか。
ma-yu

2018/09/06 05:50

できれば一つにしたいです。 一般ユーザーでSSHログインする口を作って、ファイルの転送のみ別途行うことも可能ですが、 ヒューマンエラーを可能な限り減らしたいです。
maisumakun

2018/09/06 05:55

えっと、「事前に用意する」のは最初だけで、鍵で実行するときに毎回シェルスクリプトを用意する必要はないので、「一般ユーザーでSSHログインする」必要性はないです。
ma-yu

2018/09/06 06:25

事前に用意は困難です。 スクリプトファイルが本体に存在し続けるのは防ぎたいです。 (セキュリティ上、更新手順のあるファイルを置いておきたくない) これはファイルのパーミッションで防げるかもしれませんが、ファーム更新を想定していますので、都度実行したいスクリプトの内容に変更がある可能性があります。 よって、forced-commands-only実行のタイミング毎に、毎回シェルスクリプトを転送したいです。 そして実行後はファイルの削除をしたいです。 なのでやはり複数コマンドを実行したいです。
maisumakun

2018/09/06 06:27

あれ、最初の趣旨(いくつか固定のコマンドを実行したい)と変わっていませんか?
ma-yu

2018/09/06 06:34

ご指摘ありがとうございます。 「いくつかの固定コマンドをシェルスクリプトにまとめる」とご提案いただき、その通りだと思いました。 しかし、シェルスクリプトの転送、削除はシェルスクリプト内にまとめることはできないと思いました。 ので、まとめきらない部分をコマンドとして実行したいと考えました。 イメージこんな感じです。 <ご提案前> command = "1" command = "2" command = "3" command = "4" <ご提案後> command = "1" command = "2,3が実行できるシェルスクリプトを実行" command = "4" すみません、よろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問