一度設定すると暫く使わなくて、また忘れてしまうので備忘録用に投稿。
SSHって?
リモートサーバとセキュアな通信ができる仕組み。セキュアがミソ。
TELNETとかFTPはパスワードを平文で送受信しているのでセキュリティ的によろしくない。
SSHはこの後説明するパスワード認証方式と公開鍵認証方式により安全な通信を実現している。
パスワード認証方式
サーバーに登録したパスワードで通信する。パスワードは暗号化されてる。しかし、当たり前だけど、パスワードが盗まれたら簡単にアクセスされてしまう。
公開鍵認証方式
クライアント(パソコン)に秘密鍵を置いて、サーバーには公開鍵を置く。それぞれの鍵は対になってるので、秘密鍵を持ったパソコンでしかアクセスできない。
さらに、秘密鍵へのアクセスにパスフレーズも必要なので万が一パソコン盗まれてアクセスされそうになっても安心。
パスフレーズは秘密鍵へのアクセスに必要なパスで、サーバーへのログインパスではないぜ!
秘密鍵と公開鍵の作成
具体的なMacでの鍵の作り方を解説する。実行すると下記2つの鍵ができる。
- id_rsa (秘密鍵)・・・ クライアントPCに配置
- id_rsa.pub (公開鍵)・・・ 接続対象サーバに登録
オプションについて
-
-t: 暗号化方式の指定。rsaが一番強いので基本これでいい。他にdsaとかある。 -
-b: 鍵の長さ。長ければ長いほど堅牢。でもデフォルトのままでも充分だと思う。 -
-C: 鍵のコメント。自分のメールアドレスを書いて置くと、catとかした時に分かりやすい。 -
-f: 秘密鍵のファイル名。
$ cd ~/.ssh
$ ssh-keygen -t rsa -b 4096 -C "hoge@example.com" -f ~/.ssh/id_rsa
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): <-- パスフレーズを入力(任意)
Enter same passphrase again: <-- もう一度、パスフレーズを入力(任意)
Your identification has been saved in id_rsa.
Your public key has been saved in id_rsa.pub.
$ ls ~/.ssh
id_rsa id_rsa.pub