サーバーにすばやくアクセスできるように.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_ASKPASS
win-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がある場所への正しいパスが必要です。