LoginSignup
46
35

More than 3 years have passed since last update.

SSH で毎回パスフレーズを入れるのが面倒だと思ったときには

Last updated at Posted at 2019-09-10

SSH で公開鍵認証を使う時に毎回パスフレーズを入れるのは面倒ですよね?
そこで、よい仕組みがあります。
それが
ssh-agent

ssh-add
です。

細かい話は置いておきますが、この二つを組み合わせるとパスフレーズを毎回入れる必要がなくなります。
まず、ssh-agent を実行します。

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-YQW9LjOQAQSF/agent.3090; export SSH_AUTH_SOCK;
SSH_AGENT_PID=3091; export SSH_AGENT_PID;
echo Agent pid 3091;

なんか出てきましたね、これは、環境変数と PID(ProcessID)です。

難しい話は省きますが、これを Shell に覚えこませればよいので、eval を使用します。eval の解説はまた別の機会に。

$ eval `ssh-agent`

これでオーケーです。
次に ssh-add を使用します。

$ ssh-add ~/.ssh/id_rsa_hoge

ここで、SSH のエージェントに id_rsa_hoge という秘密鍵を教えさせます。教える際にはパスフレーズが必要です。

$ ssh-add ~/.ssh/id_rsa_hoge
Enter passphrase for /home/mishihara/.ssh/id_rsa_hoge: ←ここでパスフレーズの入力をする。 
Identity added: /home/mishihara/.ssh/id_rsa_hoge (/home/mishihara/.ssh/id_rsa_hoge)

これで、エージェントに鍵が登録できました。

ワンライナーで鍵登録をもっと便利に

上記を組み合わせた複合技を私は使っています。

2020 年 4 月 11 日変更

~/.bashrc
alias ssh-add-normal='ssh-add -D > /dev/null 2>&1; kill -0 ${SSH_AGENT_PID} > /dev/null 2>&1; if [ $? -ne 0 ]; then eval `ssh-agent`; fi; ssh-add ~/.ssh/id_rsa'

これで、ssh-add を実行したときに ssh-agent が立ち上がっていないときには ssh-agent を立ち上げてから ssh-add を実行しているのです。

毎回 SSH の鍵を指定してログインしている人にはこの処方箋

毎回 SSH の秘密鍵を

$ ssh -i ~/.ssh/id_rsa_hoge foo@bar

のように設定するのは面倒ですので、この場合には~/.ssh/config を設定します。

~/.ssh/config
Host * ← すべてのログインに関して
ForwardX11 yes ←X11の転送をお願いする
ForwardAgent yes ←エージェントを使う(これはまたいつかの機会に)
ServerAliveInterval 120 ←(これもまたの機会に)

Host bar ← barというサーバを示すための単なる識別子
Hostname 192.168.XXX.YYY ←サーバの名前または IP アドレス
User foo ←あなたがサーバにログインするときにユーザ名
IdentityFIle ~/.ssh/id_rsa_hoge ←秘密鍵

これを設定しておけば、パスフレーズを毎回打つことなくログイン可能になります。
以下のように打てばオーケー

$ ssh bar

簡単に入れるようになりました。

以上!!

46
35
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46
35