`ssh-addをトリガーできますか?'ボックスにSSHを接続するときだけ? (セグウィンから)

`ssh-addをトリガーできますか?'ボックスにSSHを接続するときだけ? (セグウィンから)

サーバーにすばやくアクセスできるように.bash_profile設定しました。 myにもeval $(ssh-agent)追加すると、そのターミナルウィンドウを使用してサーバーにログインしなくても、すべてのターミナルウィンドウにSSHキーパスワードを入力する必要があります。ssh-add ~/.ssh/id_rsa_my_key.bash_profile

その行を簡単に入力できるようにエイリアスを作成することはできますがssh-add ~/.ssh/id_rsa_my_key(それで達成したいことについて考えるのをやめず、代わりにキー名を指定する方法について考える必要はありません)、まだやるべきことを覚えておく必要があります。ボックスにSSHを接続する前にこれを実行してください。

私はこれらすべてがキーチェーンによってほぼ透過的に処理され、sshアクセスについて考える必要なしに単に出ることができるOS Xで作業することに精通しています。現在、ほとんどの場合Windowsコンピュータで作業していますが、事故の習慣を変える必要はありません。 Windowsでは、私が死ぬとssh-agent

また、可能であれば、これを行うためにsshのエイリアスや機能を使用したくありません。一般的なコマンドやプログラムを置き換えるためにエイリアスと関数を作成するのは、やや脆弱で危険な解決策だと思います。その他今後問題が発生し、唯一の解決策はsshエイリアスを変更することです。そうしないと、関数がより複雑で脆弱になる可能性が高くなります。これは3番目にますます多くなります。それにもかかわらず、可能唯一の解決策になります。また、機能が機能するには、まずキーが追加されていることを確認する必要があります。そうしないと、ログインするたびにキーが追加されるため、何も実行されません。

sshこれを自動的に実行できる設定はありますか?ssh-add ~/.ssh/id_rsa_my_key私に追加するよりも優れたソリューションがありますか.bash_profile

答え1

シェル起動スクリプトに何も追加しないでください。不要なハッキングです。

代わりに追加してください

AddKeysToAgent yes

.ssh/configへ

このように、ssh-add は SSH を別のボックスに接続したときに自動的に実行されます。 ssh-agentキーが期限切れになっているか再起動された場合にのみ、キーを再入力する必要があります。

答え2

任意のソケット名を生成するのではなく、常に同じ名前を使用する場合は、このオプションを使用してくださいssh-agent-aこの名前をSSH_AUTH_SOCK環境変数としてエクスポートします。ログインしたら実行してください。

rm -f "$SSH_AUTH_SOCK"
ssh-agent -a "$SSH_AUTH_SOCK"

これにより、すべての端末が同じプロキシに接続されます。その後、ログイン時に端末を起動してパスワードの入力を求めるメッセージを表示するか、SSH自体がパスワードの入力を求めるように設定ssh-addできます。SSH_ASKPASSwin-ssh-askpass

答え3

もちろんラッパー関数を作る.bashrc

このような:

ssh () {
  ssh-add -l | grep 'The agent has no identities.' 2>&1 > /dev/null && ssh-add
  /usr/bin/ssh "$@"
}

Cygwinを使用しているので、実際にSSHがある場所への正しいパスが必要です。

関連情報