ローカル側
まずは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
か