鍵はssh-agentに登録しよう
はじめに
こんにちは。大学のテスト勉強は一夜漬けのたくみです。
Devcontainerで開発していた際に、ssh-agent
といったものを発見したのでまとめました。
発見した経緯
Devcontainerで開発する際に、Git
って絶対使いたいですよね?
Gitにアクセスする際にはGitにsshで接続するために公開鍵をGitに登録して自分のパソコンに秘密鍵を保存しておくと思います。
しかしながら、Devcontainerで開発すると、当たり前ですがDevcontainerのコンテナにはこれらの鍵は共有されません。
ボリューム付けすれば良いのかもしれませんが、複数人で開発している場合だったら鍵のパスが各自違うので面倒そうですよね。
そこで調べていて、ssh-agentを見つけました。
ssh-agent
内容
簡単に言うと、秘密鍵を登録しておくことで、ssh接続先でも秘密鍵を共有できるといったものになります。
使用方法
起動
eval `ssh-agent`
と入力して
Agent pid xxxxx
と出力されれば起動完了です。
秘密鍵の登録
ssh-add 秘密鍵のパス
で登録ができます。
ssh-add -l
と入力して、鍵の情報が出力されれば登録がうまくいっています!
ssh接続でssh-agentを使用する場合
ssh -A 鍵
いつものsshコマンドに-A
引数を渡せばssh-agentを使用したssh接続ができます。
補足
実はssh-agentさん、僕のパソコンだと、パソコンを起動し直すと毎回プロセスが消えます。そのため登録した鍵の情報も消えます。
色々と方法はあると思いますが、僕は~/.bash_profile
に起動していなかったら起動して、ssh-addするというスクリプトを書きました。
if [ -z "$SSH_AUTH_SOCK" ]; then
RUNNING_AGENT="`ps -ax | grep 'ssh-agent -s' | grep -v grep | wc -l | tr -d '[:space:]'`"
if [ "$RUNNING_AGENT" = "0" ]; then
ssh-agent -s &> $HOME/.ssh/ssh-agent
fi
eval `cat $HOME/.ssh/ssh-agent`
fi
ssh-add $HOME/.ssh/秘密鍵のパス
使用例: Devcontainer上でGitに接続したい
さて、使用方法はわかりました。じゃあ一体何に使えるんだいと言いたいことでしょう。
発見した経緯にも書きましたが、僕の場合大本の原因はDevcontainer上でGitが使用できないことでした。
これはコンテナ内には秘密鍵の情報が共有されず、ssh接続しようとする際に鍵がなく弾かれることが原因でした。
ここまで特定できれば、ssh-agentの使用方法を予想できますよね。
そうです。ssh-agentにGitに対する秘密鍵を登録しておいて、ssh-agentを使用してDevcontainerに秘密鍵を共有してもらえればうまくいきます!
やり方は上の使用方法を順に行っていけば良いです。
(ssh -A 鍵
の部分は、Devcontainerでコンテナを開く
とすれば勝手にやってくれます。)
最後に
ssh-agent、正直あんまり使用しないかもしれませんが、起動しておいて鍵を作成するたびにssh-add
と叩いたほうが、もしものときに楽になるかもしれません。
ssh-keygen
とssh-add
はセットで実行すると良いと思います。
Discussion