ローカル側
まずは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 @
# [@ip- ~]$ 接続できない時のチェック項目
リモート
"$HOME/.ssh"のパーミッションが700か"$HOME/authorized_keysのパーミッションが600かauthorized_keysは空白行で終わってるか(<id_rsa.pubの中身>\nみたいな形)
ローカル
秘密鍵のパーミッションが
600または400か