ssh できるようにする

ローカル側

まずはsshするときに使う鍵を作ります。これにはssh-keygenコマンドを使います。

# ~/.ssh/test/id_rsa に置きたいので作っておきます。
mkdir ~/.ssh/test

ssh-keygen -f ~/.ssh/test/id_rsa -N '' -t rsa -b 4096 -m PEM -C ''

ssh-keygenには5つオプションを渡していますが、これはそれぞれ

  • -fは鍵のベース名
  • -Nは鍵のパスワード
  • -tは鍵のタイプ
  • -bは鍵のサイズ
  • -mは鍵の形式(よく分かってません)
  • -Cは公開鍵の後ろに付くuser@host部分

を指定します。2019年2月ぐらいからこの-m PEMというオプションを付けないと-----BEGIN OPENSSH PRIVATE KEY-----と出力されてしまいうまくsshできないようなので付けるように覚えないと駄目みたいです。
ちなみにこのオプションを付けるとそれ以前と同じように-----END RSA PRIVATE KEY-----で出力されます。

これで~/.sshディレクトリにmy-key(秘密鍵)とmy-key.pub(公開鍵)ができたはずです。

そして、その公開鍵をコピーします。

cat ~/.ssh/test/id_rsa.pub | tr -d '\n' | pbcopy 

tr -d '\n'で最後の改行を消す必要があります。(ハマった)

リモート側

使いたいユーザーの~/.ssh/authorized_keysにコピーしたものを貼り付けます。

# .ssh ディレクトリを作る
mkdir ~/.ssh
# パーミッションを 600(自分だけが読み書き実行できる) に
chmod 700 ~/.ssh

# authorized_keys を作る
touch ~/.ssh/authorized_key
# パーミッションを 600(自分だけが読み書きできる) に
chmod 600 ~/.ssh/authorized_key

接続できるか確認

以下のようなコマンドで接続できれば完了です。

ssh -i ~/.ssh/test/id_rsa <user>@<host>
# [<user>@ip-<host> ~]$

接続できない時のチェック項目

リモート

  1. "$HOME/.ssh"のパーミッションが700
  2. "$HOME/authorized_keysのパーミッションが600
  3. authorized_keysは空白行で終わってるか(<id_rsa.pubの中身>\nみたいな形)

ローカル

  1. 秘密鍵のパーミッションが600または400