公開鍵認証
Linuxマシンにログインするためには通常、アカウント名とパスワードをサーバーに送って認証を受ける。 セキュリティ面でより安全性の高い認証方法として、公開鍵認証と呼ばれる方法がある。
公開鍵認証
仕組みについてはインターネット上で検索して調べる。
準備
クライアント側(接続元)で秘密鍵と公開鍵のペアを生成して、公開鍵をサーバーに登録する。
- 秘密鍵と公開鍵ペアの生成。鍵の実体は暗号化されたファイルである。
ssh-keygen -t rsa -i ~/.ssh/id_rsa_serverName
上のコマンドを実行すると暗号化された鍵ファイルを読み込むために必要なパスワード(パスフレーズと呼ぶ)を設定するように聞かれるので、パスフレーズを入力する。確認用に2回入力する。この例ではRSAと呼ばれる暗号化方式を使っている。鍵ファイルは~/.ssh/に以下の2つのファイルが作られるはずである。
- id_rsa_serverName (秘密鍵)
- id_rsa_serverName.pub (公開鍵)
ファイル名のserverNameの部分は、接続先のサーバー名が分かるような名前(サーバーのホスト名)を付けておくと便利である。 これらのファイルは本人以外は読み書きできないようにファイル属性を確認する。本人のみが読み書きできるようにするには以下のコマンドを実行する。
chmod 600 ~/.ssh/id_rsa_serverName*
- 公開鍵をサーバー側の~/.ssh/authorized_keysに追加する。
方法1:
ssh-copy-id ~/.ssh/id_rsa_serverName.pub <user>@<serverURL>
方法2:
サーバー側に予め~/.ssh/authorized_keysというファイルが存在しないとうまくいかないことがある。その場合は以下のように手動で、公開鍵ファイルをサーバーにコピーして、ファイルの中身を~/.ssh/authorized_keysに追加する。
scp ~/.ssh/id_rsa_serverName.pub <user>@<serverURL>:~/.ssh
この後、サーバーにログインして公開鍵ファイルの中身をauthorized_keysに追加する。
ssh <user>@<serverURL> cd ~/.ssh cat id_rsa_serverName.pub >> authorized_keys
接続
公開鍵認証を使ってサーバーにログインする。
ssh -XY ~/.ssh/id_rsa_serverName <user>@<serverURL>