bashrc機能は、現在の端末に特定のSSHキーを追加します。

bashrc機能は、現在の端末に特定のSSHキーを追加します。

gitログインしたリモートコンピュータからコードをインポート/プル/プッシュするために使用するすべてのコマンドにパスワードを入力する必要がないように、以下を追加しました。ニックネーム私の.bashrcファイルから:

alias='eval $(ssh-agent) && ssh-add'

これは、フォルダにSSHキーが1つしかないシステム、または使用するSSHキーの~/.ssh名前が主キーを考慮して文書に記載されているとおりに名前が付けられている場合に機能します。ssh-add

ssh-add は、認証エージェント ssh-agent(1) に秘密鍵 ID を追加します。
引数なしで実行すると、~/.ssh/id_rsa、~/.ssh/id_dsa、~/.ssh/id_ecdsa、および~/.ssh/id_ed25519ファイルが追加されます。

http://manpages.ubuntu.com/manpages/bionic/man1/ssh-add.1.html

しかし、今は複数のSSHキーを持つコンピュータを使用しています(これは過剰かもしれませんが、それはすべてです)。

$ cd ~/.ssh && ls -l 
-rw------- 1 user user 6059 jun  9 10:18 config
-rw------- 1 user user 9546 jul  1 17:58 known_hosts
-rw------- 1 user user 1417 aug 20 20:20 authorized_keys
-rw------- 1 user user 1424 jan 14 09:55 id_ed25519
-rw------- 1 user user 1424 jan 14 09:55 id_ed25519.pub
-rw------- 1 user user 1401 feb 16 13:26 id_ed25519-github
-rw------- 1 user user 1401 feb 16 13:26 id_ed25519-github.pub
-rw------- 1 user user  808 apr  2 12:22 id_ed25519-gitlab
-rw------- 1 user user  808 apr  2 12:22 id_ed25519-gitlab.pub

したがって、キー名をエイリアスにパラメータとして渡すことができるようにしたいですssh-eval

関数を作成するのは良い方法でしたが、関数を起動したとき(起動後)実際に無限の数のプロセスが開始されたため、期待どおりに機能しませんでしたssh-agent(実際に停止するにはCtrl + Cを押す必要がありましたsource ~/.bashrc)。

ssh-eval() {
    eval $(ssh-agent) && ssh-add "$1"
}

export -f ssh-eval

それから私はそれを次のように呼びます。

ssh-eval ~/.ssh/id_ed25519-github

または

ssh-eval

両方ともssh-agentプロセスを無期限に作成します(Ctrl + Cを使用して強制的に停止する必要があります)。

どうすればこれを正確かつ安全にすることができますか?

関連情報