入力せずにSSHにパスワードを入力してください

入力せずにSSHにパスワードを入力してください

職場では、SSHを介してリモートシステムにアクセスし、LDAPログインを介して一部のWebインターフェイスにアクセスします。 1passwordを使用してパスワードを管理しますが、パスワードマネージャからSSHにパスワードを入力する簡単な方法が見つからないようです。私はそれを見ましたが、セキュリティが非常に悪いので、私の場合でも動作しないsshpassパスワードを表示できます。ps外部プログラムまたはスクリプトからSSHを介して直接パスワードを入力する方法はありますか?それともパスワードを同期して活用するSSHツールはありますか?たとえば、SSHのロック解除と同じパスワードでキーファイルを保持し、パスワードを更新するたびにファイルが更新されます。キーをサポートするように構築されていないため、キーを使用してシステムに直接ログインすることはできません。

sshpass編集:コメント作成者はパスワードがに表示されると指摘しましたが、psこれはうまくいきませんでした。さらに、キーを使用してシステムにログインしているため、sshこのようなエイリアスを直接指定することはできません。sshpass ... ssh

sshpass編集2:パスワードマネージャが正常であることを確認し、ファイル記述子を使用してサーバーにログインしようとしましたが、うまくいかないようです。 RSAトークンの入力を求める代わりに、RSAトークンの入力を求めるメッセージが表示されます。何も得られない場合は、同じコードを実行せずにそれを受け入れないと思いますsshpass

答え1

sshpasspsにパスワードを表示する必要はありません。環境変数として読み取ることができます。

SSHPASS=12345 sshpass -e ssh user@host

またはファイルから:

sshpass -f /path/to/password_file ssh user@host

答え2

私のsshpassには-fファイルから読み込むオプションがあります。したがって、bashプロセスの交換を介して行うことができます

sshpass -f <(myscript_call_1password) ssh host

答え3

sshpass私は仕事の設定とうまくいかず、他のコマンドを使ってログインしたくなかったので、最終的に別のパスに移動しました。expectSSH構成パラメーターとNodeスクリプトの組み合わせを使用してLocalCommandパスワードを取得しました。バラよりLocalCommandでSSHを終了できますか?しかも。

本質的に私の解決策は次のとおりです。

  1. Host workマイコンピュータを指すSSHホストを設定しますHostNameHostName localhost

  2. 設定にPermitLocalCommand yesおよび追加LocalComamnd <path to my expect script>; kill $PPIDHost

  3. 予想されるスクリプトを使用して、次の操作を行います。

    1. 私のNodeスクリプトを実行すると、私のパスワードを取得して変数に保存します。

    2. 予想期間に保存されたパスワードを使用して対話してください(下記参照)

  4. SSH セッションが完了するとLocalCommand実行され、kill $PPID元の端末セッションに戻ります。

私のサンプルexpectスクリプトは次のとおりです。

set password [exec node <script>]
spawn -noecho ssh <work_host>
expect "Password"
send "${password}\n"
interact

答え4

自動化とキーストロークの削除に関する元の質問に答えるには、次の手順を実行します。

そうですが、sshpass実行sshpassする前にコマンドを入力しなければならないのでssh少し不便ですね。

あなたのコメントに基づいて:

1passwordデータベースと通信するスクリプトがあるので、このスクリプトをSSHと統合したいと思います。

エイリアスを定義します(例:bashで)。

alias ssh='sshpass -p$(<your_script>) ssh'

一般ssh通貨として使用してください。

関連情報