sshの鍵認証

2015年4月15日

Tips コマンド サーバー セキュリティ

サーバー運用を行う上でFTPはもう古い。 以前にFTPの脆弱性が指摘されて、FTPのポートを公開サーバで開いている事は「セキュリティ的に問題あり」という風になってしまった。 そこで、FTPよりセキュアなSFTPを使う事が普通になっているのだが、このSFTPは、単なるSSHアクセスという事で22番ポートなのだ。 そして、scpやrsyncのコマンドを利用する場合も、サーバーのパスワードを入力すれば、サーバー間でデータのやり取りが柔軟にできる。 さらに、クライアント端末専用の鍵認証にすると、特定の端末の公開鍵をサーバーに登録することで、パスワードの入力なども無くし且つセキュアな状態にすることが可能になる。

SSHアクセスでパスワード入力を無くす鍵登録方法

1.ローカル鍵を作成

# アカウントルート・ディレクトリの.sshフォルダに移動(無ければ作る) $ cd ~/.ssh # 鍵ファイルを作成 $ ssh-keygen -f id_rsa -t rsa 上記操作で ~/.ssh/以下に2つのファイルが追加される id_rsa id_rsa.pub 作成されたのは、秘密鍵と公開鍵で、公開鍵をサーバーに転送する。

2.サーバー設定

対象サーバーにアクセスし、以下の操作を行う。 # ログイン対象アカウントの.sshフォルダに移動(無ければ作る) $ ~/.ssh/ .sshフォルダのパーミッションは700にセットする。 su権限で作業する場合は、ユーザー権限も忘れないようにセットしておこう。

3.サーバーに公開鍵を転送

# クライアント端末で操作 $ scp id_rsa.pub user@server.com:~/.ssh > password-input

4.サーバーに公開鍵をセット

# サーバーにログイン、~/.ssh/に移動して作業する $ cat id_rsa.pub >> authorized_keys # authorized_keysファイルの権限を600にする $ chmod 600 authorized_keys

5.アクセスチェック

# 3度、クライアント端末で操作 $ ssh -i id_rsa user@server.com パスワードを聞かれなかったら、成功。

鍵をクライアントでデフォルト登録する

この手のやり方を書いてあるサイトでは、上記で終わっている記事ばかりだったので、この記事は、ここからが本当に書きたかった内容です。 sshコマンドで-iオプションを叩くのも面倒くさいと思う場合、秘密鍵をクライアントのssh情報に登録してしまうこともできます。 $ ssh-add -K id_rsa このようにaddして登録しておくことで、-iオプション無しで、sshコマンドで便利にアクセスができるようになる。 細かいことだが、作業効率は格段にアップする。 ただし、クライアント端末のOS認証などのセキュリティはしっかりしてくださいね。

ssh-addされた情報の管理

$ ssh-add -l これで登録されている一覧が表示される。 消すことも可能なので、複数の鍵を管理する場合には是非こういったコマンドを使い慣れておく必要がある。