ssh接続時にssh-agentを利用してパスフレーズの入力を省略する
対象環境
- CentOS: 6.4
ssh接続時に求められるパスフレーズの入力は、ssh-agent
やkeychain
を使うことで省略することが可能です。
ssh-agentで対応する
ssh-agent
は、鍵を管理してくれるデーモンです。
ssh-agentの起動
以下のコマンドでssh-agent
を起動します。
[hoge@server ~]$ eval `ssh-agent` Agent pid 3952
起動したssh-agentのPIDが表示され、ssh-agentが起動します。
以下のようにpsコマンド起動しているのを確認できます。
[hoge@server ~]$ ps aux | grep ssh-agent hoge 3952 0.0 0.0 55524 720 ? Ss 03:20 0:00 ssh-agent
evalでssh-agentを実行する理由
evalでssh-agentを実行すると以下のようにssh-agent実行時に標準出力に出力される以下のコマンドが実行され、
ssh-agentを使用する際に必要な環境変数がセットされます。
[hoge@server ~]$ ssh-agent SSH_AUTH_SOCK=/tmp/ssh-uhDmmA3955/agent.3955; export SSH_AUTH_SOCK; SSH_AGENT_PID=3956; export SSH_AGENT_PID; echo Agent pid 3956;
evalを付けないとこの環境変数がセットされないのでssh-agentが立ち上がるだけで、ログインしている
ユーザから使うことができません。
以前にssh-agentの仕組みがわからずログインのたびに毎回ssh-agentを実行していたため、
たくさんのssh-agentが立ち上がっていた環境を見たことがあります。
立ち上げたssh-agentはログアウトしても残りますので、前回立ち上げたssh-agentを放置して
毎回ssh-agentを立ち上げているとそのようになってしまいます。
これを防ぐためにはログイン時にSSH_AUTH_SOCKを設定するように.bash_profileなどにssh-agent実行時に
出力された文字列を設定すれば、毎回ssh-agentを起動する必要はなくなります。
.bash_profile
SSH_AUTH_SOCK=/tmp/ssh-enzymr4028/agent.4028; export SSH_AUTH_SOCK;
この場合、立ち上がっているssh-agentが止まってしまって別のssh-agentを立ち上げた場合や
OSを再起動した場合には当然無効になるので再度設定する必要があります。
keychainで対応する
パスフレーズ入力を省略するためには、ssh-agentで対応する方法の他にkeychainを使うという方法もあります。
keychainのインストール方法
keychainをCentOS6.4で試したところyumからインストール出来ませんでした。
そのような場合には以下のようにしてインストールできます。
yum-prioritiesインストール
通常のパッケージではkeychainがインストール出来ないため、リポジトリの追加を行うのですが、
その場合に通常パッケージが上書きされないようにyum-prioritiesをインストールします。
yum -y install yum-priorities yum -y install yum-plugin-priorities
RPMforgeリポジトリの追加
rpmforgeをダウンロードしてインストールします。
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm rpm -Uvh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
キーのインストール
wget http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt rpm --import RPM-GPG-KEY.dag.txt
keychainのインストール
yumでkeychainをインストールします。
先ほど設定したrpmforgeはインストール直後は無効になっていると思うので、
--enablerepo=rpmforge
のオプションをつけます。
[hoge@server ~]# yum --enablerepo=rpmforge install keychain
keychainを使う
以下のように.bash_profileに設定してログイン時にkeychainを立ち上げるようにします。
eval `keychain --eval --agents ssh`
evalが2つ重なっていますが、これはssh-agentと同じようにkeychainも–evalオプションを付けることで`SSH_AUTH_SOCK`を出力してくれるので、
それをevalで実行して設定という意味です。
あとはkeychainコマンドで鍵を登録すれば完了です。
[hoge@server ~]$ keychain /home/www/.ssh/id_rsa
TAG
新しいことや難しい課題に挑戦することにやりがいを感じ、安定やぬるい事は退屈だと感じます。 考えるより先に手が動く、肉体派エンジニアで座右の銘は諸行無常。 大事なのは感性、プログラミングにおいても感覚で理解し、感覚で書きます。
TAG
- Android
- AWS
- Bitrise
- CodePipeline
- Firebase
- HTML
- iOS
- IoT
- JavaScript
- KPI
- Linux
- Mac
- Memcached
- MGRe
- MGReのゆるガチエンジニアブログ
- MySQL
- PHP
- PICK UP
- PR
- Python
- Ruby
- Ruby on Rails
- SEO
- Swift
- TIPS
- UI/UX
- VirtualBox
- Wantedly
- Windows
- アクセス解析
- イベントレポート
- エンジニアブログ
- ガジェット
- カスタマーサクセス
- サーバ技術
- サービス
- セキュリティ
- セミナー・展示会
- テクノロジー
- デザイン
- プレスリリース
- マーケティング施策
- マネジメント
- ラボ
- リーンスタートアップ
- 企画
- 会社紹介
- 会社紹介資料
- 勉強会
- 実績紹介
- 拡張性
- 採用
- 日常
- 書籍紹介
- 歓迎会
- 社内イベント
- 社員インタビュー
- 社長ブログ
- 視察
- 開発環境