シェル スクリプトでsshコマンドを使用しようとすると、コマンドがそのまま残ります。シェルスクリプトでsshを使用する方法の例はありますか?
5 に答える
やりたいこと、使い方次第です。別のマシンでコマンドをリモートで安全に実行したいだけの場合は、次を使用してください
ssh user@host command
例えば
ssh user@host ls
これを安全に行うには、実行時にユーザーにパスワードを要求するか、リモート ホストでキーを設定する必要があります。
まず、パスワードなし (公開鍵ログイン) を設定していることを確認する必要があります。構成ファイルの形式がわずかに異なる ssh には、少なくとも 2 つのフレーバーがあります。システムのsshマンページを確認するか、ローカルのシステム管理者に相談するか、公開鍵認証をセットアップするにはどうすればよいですか? に進んでください。.
バッチ モード (シェル スクリプト内など) でsshを実行するには、実行するコマンドを渡す必要があります。構文は次のとおりです。
ssh host command
同時に複数のコマンドを実行する場合は、引用符とセミコロンを使用します。
ssh host "command1; command2"
引用符は、シェル インタープリターからセミコロンを保護するために必要です。これらを省略した場合、最初のコマンドのみがリモートで実行され、残りはすべてローカル マシンで実行されます。
~/.ssh/authorized_keys
SSH 公開鍵をリモート ホスト上のファイルに入れる必要があります。次に、そのホストにパスワードなしで SSH 接続できるようになります。
または、 を使用することもできますssh-agent
。スクリプトにパスワードを保存しないことをお勧めします。
コマンドを使用expect
して、ユーザー名/パスワード情報を入力できます。
最も簡単な方法は、スクリプトを実行するユーザーの証明書を使用することです。
より複雑なものは、シェル コマンドがパスワードを要求したときにパスワードを stdin に追加することを意味します。Perlライブラリがパスワードを尋ねるプロンプトをユーザーに表示することを期待してください(少なくともインタラクティブであれば)、多くの選択肢があります。