SSH で公開鍵認証による接続の設定、Mac で ssh-keygen し公開鍵をサーバーに保存 〜 CentOS6

今回から、SSH 接続と iptables などセキュリティ関連の設定をまとめていきます。SSH 接続や iptables の設定はサーバーのセキュリティの基礎部分なのでしっかりと慎重に行う。まずは、SSH で公開鍵認証による接続の設定を行います。

私の場合、SSHクライアントは、Mac は iTerm2、Windows では TeraTerm を使っています。セキュリティ向上のため、SSH 接続において公開鍵と秘密鍵による認証の設定を行います。鍵の作成はサーバーでやるのはよろしくない。秘密鍵はサーバーに持たせないほうが良いためです。Mac(ローカル側)にて ssh-keygen コマンドを用いて公開鍵、秘密鍵を作成します。

スポンサーリンク

このエントリーは、CentOS 6.4 インストール~設定手順の目次 の一部です。

Mac で ssh-keygen コマンドを用いて公開鍵、秘密鍵を作成

Enter passphrase で、SSH クライアントからの接続時に要求されるパスフレーズを設定します。これは忘れないように控えておく。id_rsa が秘密鍵、id_rsa.pub が公開鍵となります。公開鍵(id_rsa.pub)のほうをサーバーに置きます。私の場合、作成した2つの鍵(秘密鍵と公開鍵)を USB メモリにコピーして移動させました。Windows の TeraTerm でも、この Mac で作った秘密鍵を使いたかったためです。よりセキュリティを高めるなら、Windows の TeraTerm でも別の鍵セットを作って、公開鍵を authorized_keys に追加したほうが良いかもしれない。

USB メモリを使って公開鍵をサーバーにコピー

Mac の ssh-keygen コマンドで作成した公開鍵を USB メモリに保存します。その後、USB メモリーをサーバー機に挿して、公開鍵をサーバーにコピーします。秘密鍵は絶対にサーバーに置かないように。USB メモリをサーバーのマシンに挿してマウント後、公開鍵のほうを SSH でログインするユーザーの ~/.ssh/authorized_keys に追加し、公開鍵を書き換えられないようにパーミッションを600に変更します。この作業は私はサーバー機ローカルにつないだディスプレイで行いました。

公開鍵認証を行う一般ユーザーでログイン後、以下のコマンドを実行。

root で行う場合は、# chown -R username:username /home/username/.ssh を忘れずに。

USB メモリをサーバーマシンから外したら、Mac に戻って SSH 接続確認。

とすると、初回接続時は、パスフレーズ入力を求めるダイアログボックスが表示されるので入力してOK。これでSSH接続確認できました。2回目以降はパスフレーズ入力は要求されません。

サーバーのホスト名で接続できない場合は、ホスト機のIPアドレスを直に指定してSSH接続を試みる。ホスト名で接続できない場合の原因は、十中八九名前解決ができないせいなので、名前解決の手っ取り早い方法として、Mac の /etc/hosts に以下の行を追加しておきます。

scp を使って公開鍵をサーバーに転送する

scp を使って公開鍵をサーバーに転送する場合は以下。鍵セットを作成したローカル(Mac側)から scp コマンドを使って、公開鍵を転送。

初めてsshやscp接続を試みる時は、サーバー公開鍵の fingerprint が確認される。確認後 yes で進みもう一回 scp コマンドを実行、パスワードを求められるのでユーザーのパスワードを入力。

これで、サーバー側へ公開鍵が渡されたので、サーバーに入ったあと公開鍵の設定を行います。

ここでは、まだ公開鍵認証は有効になっていないので、普通にユーザーのパスワードを入力してSSH接続。以降ログインした一般ユーザーで作業。

cat で追加しておくと複数の公開鍵を1つのファイルの保存することができ、複数の鍵セットを利用できる。アクセス権(パーミッション)を変更しているのは公開鍵の改ざんを防ぐためです。

ここまでできたら一旦ログアウトして SSH で再接続すれば、公開鍵認証による接続が可能となります。

スポンサーリンク
サーバ構築研究会の CentOS 本は、昔からお世話になっています。Linux の教科書は Linux の基本を学ぶのにおすすめです。
スポンサーリンク
 
Twitterを使っていますのでフォローお願いたします!ブログの更新情報もつぶやいてます^^
(英語学習用)

Leave Your Message!