OpenSSHのパスワード入力を省略する
公開日:
カテゴリ: 開発
主に開発環境でのバッチ実行向けに、OpenSSHのパスワード入力を省略する方法を紹介します。
ご注意
本記事での方法は安全性の低い内容であるため、万が一パスワードが漏洩しても問題が発生しない開発環境向けの方法となっています。本番環境などの重要なシステムでの使用は避け、パスワードマネージャや公開鍵認証を使いましょう。
OpenSSH
OpenSSHのコマンド(SSHやSCPなど)では、引数やパイプラインでパスワードを渡して入力するような機能はありません。
代わりに、コマンドを実行してその結果をパスワードとして入力する機能があるため、それを使って無理矢理実現させます。おそらくこの機能の本来の目的は、GUI環境の裏側でSSHやSCPを実行した際(TTYがない状態)にパスワードの入力ウィンドウを画面上に表示させるためのもののようです。
方法
パスワードを標準出力するスクリプトを作成
まずはパスワードのみを標準出力するスクリプトを作成します。Linux/Mac/WSLではシェルスクリプト、Windowsではbatファイルです。
Windows
@echo off
echo パスワードLinux/Mac/WSL
#!/bin/sh
echo パスワードLinux/Mac/WSLの場合、作成したら実行権限を付与しておきます。
chmod +x シェルスクリプトのパス環境変数の設定
次に環境変数を設定します。SSH_ASKPASSに先ほど作成したパスワードを返すスクリプトのパス、SSH_ASKPASS_REQUIREにforceを指定します。
Windows
set SSH_ASKPASS=バッチファイルのパス
set SSH_ASKPASS_REQUIRE=forceLinux/Mac/WSL
SSH_ASKPASS=シェルスクリプトのパス
SSH_ASKPASS_REQUIRE=force以上で準備は完了です。
あとは通常通りsshコマンドやscpコマンドを実行すると、パスワードのプロンプトが表示されることなくコマンドが実行されます。
その他
SSH_ASKPASS_REQUIRE
以下のオプションが指定可能です。
none(デフォルト):SSH_ASKPASSを使用しない(TTYから入力)prefer: TTYよりもSSH_ASKPASSを優先して使用するforce:SSH_ASKPASSを強制的に使用する
カテゴリ: 開発