ぽっぽこメモ太郎

短くて分かりやすい備忘録を目指しています

公開鍵認証の有効化

以前の記事 で挙げていた項目の中でも一番最初にやっておきたいこと

ここでは公開鍵認証についての説明はしないが、以下の記事が参考になると思う
→ SSHの公開鍵認証における良くある誤解の話 - Qiita

環境

  • ローカル環境
  • サーバー環境
    • OS:Ubuntu Server 18.04 LTS

注意

本記事の手順はパスワード認証でサーバーに接続出来る状態であることが条件
後述する手順の「サーバーに公開鍵登録」で以下のようなエラーが出る場合はサーバー側の設定でパスワード認証が無効になっている可能性がある

 [ユーザー名]@[サーバーIP]: Permission denied (publickey).

また、パスワード認証を許可する際は特定されやすいユーザー名、パスワードは厳禁
例)ユーザー名とパスワードが両方とも user

これらに加えてデフォルトポート (22) を使用していると、簡単に不正アクセスされてしまう(実体験)

手順

キーペア生成

下記コマンドを実行する

$ ssh-keygen -t rsa -b 4096

ファイル名の入力を促されるが、デフォルト(id_rsa)で良い場合はそのまま Enterキー を押下

Enter file in which to save the key (/c/Users/[ユーザー名]/.ssh/id_rsa):

パスフレーズssh接続する際にパスワードの入力を要求されるようになる)も設定できるが、今回は設定しないのでそのまま Enterキー を押下

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

パスフレーズの使用/不使用について調べたが、気休め程度だという意見もあって入力の手間に見合う効果が得られるかどうかが分からないので調べている最中。

処理が終わるとログインユーザーのホームディレクトリ直下に.ssh/id_rsa.ssh/id_rsa.pubが生成される。

※鍵の保存先やファイル名を指定する場合

$ ssh-keygen -t rsa -b 4096 -f [ファイルパス]

オプションの-b 4096は鍵長を4096bitに指定する為に付与している
※参考
→  2017年版 SSH公開鍵認証で使用する秘密鍵ペアの作り方

サーバーに公開鍵登録 

公開鍵の保存先とファイル名がデフォルト (~/.ssh/id_rsa.pub) の場合

$ ssh-copy-id [接続ユーザー名]@[接続先IP or ホスト名]

ファイル名を指定する場合はこっち

$ ssh-copy-id -i [公開鍵 (.pubファイル) のパス] [接続ユーザー名]@[接続先IP or ホスト名]

接続確認

デフォルトの場合

$ ssh [接続ユーザー名]@[接続先IP or ホスト名]

ファイルを指定する場合

$ ssh -i [ファイルパス] [接続ユーザー名]@[接続先IP or ホスト名]

備考

ConoHaのVPSでは
https://support.conoha.jp/v/vps_sshkey/
に記載されている手順で出来るらしい