GNU/Linux >> Linux の 問題 >  >> Linux

Linuxで「sshpass」がファイル転送を自動化する正しい方法ではない理由

質問: scpを使用してリモートマシン間のファイル転送を自動化するタスクが割り当てられました。しかし、 scpのパラメータとしてパスワードを指定する方法がわかりません。 指図。友人の1人が、「 sshpass」の使用を提案しました ‘コマンド(引数としてパスワードを取ることができます)、しかし私の上司は「 sshpassはそれを行う正しい方法ではなく、安全ではありません 「。何を提案しますか?

–ラビ

回答:

ラビ、あなたの友人はあなたの質問に対する答えを持っていますが、あなたの上司は正しいです 。 ‘ sshpass ‘ユーティリティはパスワードを引数として取りますが、安全性は低くなります。代わりに、安全なファイル転送にはSSHキーを使用する必要があります。

両方の方法を試して、どちらがより安全かを見てみましょう。

sshpassの使用

sshpass」をインストールします ‘以下のコマンドを使用します:

$ yum install sshpass

Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package sshpass.x86_64 0:1.05-1.el5 set to be updated
--> Finished Dependency Resolution

インストールすると、次のように使用できます:

sshpass -p "password" scp file.txt user@remote_machine:

注意: パスワードはコマンドに記載されているため、「 w」を使用してマシンにログインしている他のユーザーがパスワードを表示できます。 ' 指図。これを防ぐには、パスワードをファイルに保存し、そのファイルを引数としてコマンドに渡すことができます(以下を参照)。

$ echo "password" > passfile.txt
$ chmod 600 passfile.txt
$ sshpass -f passfile.txt scp file.txt user@remote_machine:

注意: パスワードは、ログファイルまたは履歴から引き続き追跡できます。

したがって、「sshpass」という評決は安全な方法ではありません 。代わりに、上司が提案したように、パスワードなしの接続にはSecureSSHキーを使用する必要があります。

安全なsshキーの使用

以下のように、ソースマシンでsshキーを生成します。

[machine-A ]$ ssh-keygen -t rsa
[machine-A ]$ scp ~/.ssh/id_rsa.pub user@machine-B:.ssh/authorized_keys

これで、machine-Aとmachine-Bの間にsshパスワードなしの接続が設定されました。パスワードを入力せずにファイルを転送してみてください:

$ scp file.txt user@remote_machine:

終わり!ラヴィ、時々ボスが正しい🙂


Linux
  1. 次の方法でコアファイルの制限サイズが変更されないのはなぜですか?

  2. Linux の <conio.h> ヘッダー ファイルはどこにありますか? <conio.h> が見つからないのはなぜですか?

  3. Linux で .so.1 ファイルが必要なのはなぜですか?

  1. Linux カーネルの pr_debug が何も出力しないのはなぜですか?

  2. Windows が Linux パーティション内のファイルを認識しないのはなぜですか?

  3. Linux では、パスワードなしでは誰もアクセスできないようにフォルダ/パーティションを暗号化することはできますか?

  1. Linuxターミナルでファイルをコピーする

  2. Linuxターミナルでファイルの名前を変更します

  3. chown を使用してディレクトリのグループ所有者を変更することは許可されていません....なぜですか?