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-add
。expect
ハッキング方法を使用せずに、そのキーをエージェントに自動的に追加できます。
もちろん、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として実行するようです。正当な理由がない限り、権限のないロールアカウントでこれらすべてを実行してください。。