職場では、SSHを介してリモートシステムにアクセスし、LDAPログインを介して一部のWebインターフェイスにアクセスします。 1passwordを使用してパスワードを管理しますが、パスワードマネージャからSSHにパスワードを入力する簡単な方法が見つからないようです。私はそれを見ましたが、セキュリティが非常に悪いので、私の場合でも動作しないsshpass
パスワードを表示できます。ps
外部プログラムまたはスクリプトからSSHを介して直接パスワードを入力する方法はありますか?それともパスワードを同期して活用するSSHツールはありますか?たとえば、SSHのロック解除と同じパスワードでキーファイルを保持し、パスワードを更新するたびにファイルが更新されます。キーをサポートするように構築されていないため、キーを使用してシステムに直接ログインすることはできません。
sshpass
編集:コメント作成者はパスワードがに表示されると指摘しましたが、ps
これはうまくいきませんでした。さらに、キーを使用してシステムにログインしているため、ssh
このようなエイリアスを直接指定することはできません。sshpass ... ssh
sshpass
編集2:パスワードマネージャが正常であることを確認し、ファイル記述子を使用してサーバーにログインしようとしましたが、うまくいかないようです。 RSAトークンの入力を求める代わりに、RSAトークンの入力を求めるメッセージが表示されます。何も得られない場合は、同じコードを実行せずにそれを受け入れないと思いますsshpass
。
答え1
sshpass
psにパスワードを表示する必要はありません。環境変数として読み取ることができます。
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
私は仕事の設定とうまくいかず、他のコマンドを使ってログインしたくなかったので、最終的に別のパスに移動しました。expect
SSH構成パラメーターとNodeスクリプトの組み合わせを使用してLocalCommand
パスワードを取得しました。バラよりLocalCommandでSSHを終了できますか?しかも。
本質的に私の解決策は次のとおりです。
Host work
マイコンピュータを指すSSHホストを設定しますHostName
。HostName localhost
設定に
PermitLocalCommand yes
および追加LocalComamnd <path to my expect script>; kill $PPID
Host
予想されるスクリプトを使用して、次の操作を行います。
私のNodeスクリプトを実行すると、私のパスワードを取得して変数に保存します。
予想期間に保存されたパスワードを使用して対話してください(下記参照)
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
通貨として使用してください。