linux sshpassを使ってsshやscpでパスワードの入力を自動化する方法

2018.4.8

パスワードの入力を自動化する方法はいくつかありますが、sshpassを使うと割と簡単に実現できます。

まずはsshpassをインストールします。

sudo apt install sshpass

導入は完了です。

sshログインを自動化してコマンドを実行する

sshpassを利用してパスワードを入力し、ssh接続したのち、コマンドを実行する例になります。

[]で囲んでいる個所を、任意の値に変更してください。

sshpass -p [password] ssh -o StrictHostKeyChecking=no [user name]@[host name] [command]

scpでファイルのダウンロードを自動化する

sshpassを利用してパスワードを入力し、scpコマンドでサーバのファイルをローカルにダウンロードする例になります。

[]で囲んでいる個所を、任意の値に変更してください。

sshpass -p [password] scp -o StrictHostKeyChecking=no [remote user name]@[host name]:[remote file pass] [loacl file path]

[password]部分をファイルから読み込ませることもできます。

-pを-fに変更して、パスワードが書かれたファイルを指定すればOKです。

sshpass -f [password filename] scp -o StrictHostKeyChecking=no [remote user name]@[host name]:[remote file pass] [loacl file path]

rsyncも自動化する

rsyncもsshの方法を応用することで、自動ログインできるようになります。

sshpass -p [password] rsync [local file path] [remote user name]@[host name]:[remote file path]

パスワードを環境変数から読み込ませたい

パスワードをコマンドに入れたくない、パスワードファイルにも書きたくない。という場合は、「SSHPASS」という名前の環境変数にパスワードをセットしておき、 -pや-fの代わりに「-e」をオプションに指定することで、環境変数からパスワードを取得して、実行してくれます。

sshpass -e ssh -o StrictHostKeyChecking=no [user name]@[host name] [command]

まとめ