質問: 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:
終わり!ラヴィ、時々ボスが正しい🙂