はじめに
エンジニアとして初めての現場。
支給されたMacで、sshキーの作成と認証作業で少し手こずったので記録として残しておく。
Githubやbitbucket, ec2やlightsailなど、様々なサイトやサーバーへのアクセスをする際に必要になる。
sshキー(秘密鍵・公開鍵)の作成
まずは、接続元であるクライアント側(ex. 自分のパソコン)で、鍵を生成します。
ssh クライアントへ移動
$ pwd
Users/ユーザー名/ <====ホームディレクトリ
$ cd .ssh
$ pwd
Users/ユーザー名/.ssh
キー作成コマンド
$ ssh-keygen # 私はデフォルトのままで作成
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/ユーザー名/.ssh/id_rsa): <--鍵の保存先
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.
# 私は全て何も書かずEnter押しました。(全てデフォルトのまま作成)
$ ls
id_rsa id_rsa.pub
これで、**秘密鍵(id_rsa)と公開鍵(id_rsa.pub)**が作成されました。
その名の通り、
秘密鍵: 他の人に教えてはいけない
公開鍵: 他の人に教えてもよい
となっている。
ssh-keygenコマンドのオプションが記載されてるサイト
【 ssh-keygen 】コマンド――SSHの公開鍵と秘密鍵を作成する
https://www.atmarkit.co.jp/ait/articles/1908/02/news015.html
sshキー(秘密鍵・公開鍵)の認証
sshキーを使って、サイト(Github, bitbucketなど)やサーバー(ec2インスタンスなど)にアクセスするための鍵の認証方法を書いていく。
先ほど作成した2つの鍵のうち公開鍵をサーバー側に登録することにより、クライアント側との接続を可能にする。
サーバー側(接続先)での操作
$ install -m 0700 -d ~/.ssh # .sshがない場合
or
$ chmod 700 .ssh # .sshがある場合
# 上記のどちらかを実行
$ cd .ssh
$ touch authorized_keys # authorized_keysというファイルを作成
$ vim authorized_keys # ここで、先ほど作った公開鍵(id_rsa.pub)の記述をそのままコピペする
$ chmod 600 authorized_keys # authorized_keysに権限を与える
これで、sshキーの認証はできた。
.ssh/config
.ssh/configとは、ssh経由でのリモートサーバーの接続する際に利用される設定ファイルです。
一つの秘密鍵で複数の公開鍵を扱うときなどに、.ssh/configを利用すると便利です。
ssh経由で接続する際の、長ったらしいユーザー名・ホスト名・ポート番号・鍵の名前 などを予めファイルに記載しておくことで、省略できます。
Host 任意の接続名(hoge)
HostName ホスト名
User ユーザー名
Port ポート番号
IdentityFile 鍵へのPATH(例えば~/.ssh/hoge.key)
この場合だと、、、
$ ssh hoge
で接続できてしまいます。
その他もう少し詳しく知りたい方は下記リンクへどうぞ
~/.ssh/configについて
https://qiita.com/passol78/items/2ad123e39efeb1a5286b
おわりに
OpenSSH 7.3以降だと、.ssh/configに記述していた複数の公開鍵をファイルごとに分けることもできるらしい。そこまで私の理解はまだ深くないので、詳しくは説明できない。
sshキーの生成・認証作業は、僕はそんなに頻繁にやることではないので、こうやって自分のメモと、参照した記事も一緒に保存しておくと、後々、思い出しやすくなる。
もし私の説明がわかりにくいと感じた人は、ぜひ各項目に散らばっている参考記事を読んでほしいです。
参考記事
秘密鍵・公開鍵を作成する(Mac)
https://qiita.com/reflet/items/0c338df07d9f6c6ef776
RSA公開鍵認証によるssh接続設定について(Macbook -> VPS)
https://qiita.com/m1220/items/9dc3856bbcf985577023