ssh-agentにキーファイルとパスワードを自動的に追加するには?

ssh-agentにキーファイルとパスワードを自動的に追加するには?

Linux 4.4.0-34-一般 #53-Ubuntu SMP Wed Jul 27 16:06:39 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

私はこのスクリプトを使用してssh-agentを起動し、別のスクリプトを起動します(使用予想されるエージェントにパスワードを送ってください。)

#!/bin/bash
eval `ssh-agent -s`
/root/script2

/ルート/スクリプト2:

#!/usr/bin/expect -f
spawn ssh-add /root/.ssh/key
expect "Enter passphrase for /root/.ssh/key:"
send "passphrase\n";
interact

すべてのスクリプトは+xパスワードフレーズで100%有効です。

最初のスクリプトを起動した後、次のようになります。

Agent pid 3985
spawn ssh-add /root/.ssh/key
Enter passphrase for /root/.ssh/key:
Identity added: /root/.ssh/key (/root/.ssh/key)

ご覧のとおり、エージェントが起動しました。そしてIDを追加しかし、私が試したとき」SSH -追加-l「私は得る:

Error connecting to agent: No such file or directory

ただし、プロセスはまだPID 3985で実行されています。それはなぜ私に教えてくれるのですか?IDを追加しかし、SSH -追加-l役に立たない? :(

さて、手動でssh-agentを評価し、キーファイルを追加してみました。

root@:~# eval `ssh-agent -s`
Agent pid 4063
root@:~# ssh-add -l
The agent has no identities.
root@:~# ssh-add /root/.ssh/key
Enter passphrase for /root/.ssh/key:
Identity added: /root/.ssh/key (/root/.ssh/key)
root@:~# ssh-add -l
4096 SHA256:FxPiCFYOiRree0ogNPpo81DTDUqmr1Brlo0LFnFK12o /root/.ssh/key (RSA)

手動で実行しようとするとなぜ動作しますか?この問題をどのように解決しますか? PCの起動時に自動的に起動するようにrc.localに追加したいと思います。

UPD ただ走ろうとしたらスクリプト2手動で動作します(エージェントにキーが追加されました)。だから問題はeval sh-agentにあるようですが、何が間違っているのかわかりません。

ベストアンサー1

まず、この問題を解決してみましょう。いずれにせよ、キーexpectにパスワードを入力しないでくださいssh-addexpectハッキング方法を使用せずに、そのキーをエージェントに自動的に追加できます。

もちろん、SSHを介して特定の操作をトリガーする必要がある自動化には、これらのパスワードのないキーのみを使用し、SSH強制コマンドを使用してこれらのキーを呼び出すことができる操作を厳密に制限します。

これで解決策が機能しない理由は次のとおりです。

#!/bin/bash
eval `ssh-agent -s`
/root/script2

このスクリプト(bash-ismsがないため、より移植性の高いものを使用することもできます#!/bin/sh)はエージェントを起動し、その詳細をその環境に保存してから別のスクリプトを実行します。その後、終了。スクリプトの実行が停止すると、エージェントの詳細を含む環境変数も実行を停止します。

あなたは走らなければなりません

eval `ssh-agent -s`

実際にプロキシ接続の詳細を保存し、再利用したいシェルから。

とにかく、あなたの鍵はコードがないので、本当に代理人が必要ですか?あまり複雑ではありません。

ssh -i ~/place/where/the/key/lives -l username server restricted-command

これにより、sshクライアントはプロキシを介さずに直接キーを読み取ることができます。

最後に、これをすべてrootとして実行するようです。正当な理由がない限り、権限のないロールアカウントでこれらすべてを実行してください。

おすすめ記事