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