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を使用して強制的に停止する必要があります)。
どうすればこれを正確かつ安全にすることができますか?