Windowsから公開鍵認証でSSHログインする [Ubuntu 22.04 LTS]

スポンサーリンク
スポンサーリンク

環境

接続元Windows
接続先Ubuntu 22.04 LTS Server
スポンサーリンク

接続元(Windows)の作業手順

前準備

WindowsでPowershellを起動します。

公開鍵認証用のキーペアを作成

ssh-keygen -t ed25519 -f .\.ssh\id_ed25519_ubuntu -C ""

RSAよりも強固でパフォーマンスも良い暗号化アルゴリズムである “Ed25519” を使用します。

実行するとWindowsの “%UserProfile%\.ssh” ディレクトリの中に、次の2つのファイルが作成されます。

ファイル名用途
id_ed25519_ubuntu秘密鍵
id_ed25519_ubuntu.pub公開鍵

ssh-keygenのオプションについて

オプション意味
-t ed25519ed25519暗号化アルゴリズム
-f .\.ssh\id_ed25519_ubuntuファイル名を”id_ed25519_ubuntu”にする。
(指定しない場合、”%UserProfile%\.ssh/id_ed25519″になる)
-C ""ファイル内末尾のコメント部を記載しない。
(指定しない場合、コメント部に「<接続元ユーザー名>@<接続元ホスト名>」が記載される)

公開鍵をサーバにコピーする

cat .\.ssh\id_ed25519_ubuntu.pub | ssh <接続先ユーザー名>@<接続先ホスト名orIPアドレス> `
" `
mkdir -p ~/.ssh && chmod 700 ~/.ssh && `
cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys `
"

作成した公開鍵を接続先のサーバにコピーします。

実際に接続できるか確認する

ssh -i .\.ssh\id_ed25519_ubuntu <接続先ユーザー名>@<接続先ホスト名orIPアドレス>

# ssh接続できることを確認

exit

公開鍵認証でssh接続ができることを確認したら、一旦exitでssh接続を終了します。

sshコマンドのオプションについて

オプション意味
-i .\.ssh\id_ed25519_ubuntu秘密鍵ファイルを指定します。

sshコマンドを短縮する (エイリアス定義)

毎回、上の長いコマンドを使うのは大変なので、エイリアス定義を追加します。

「%UserProfile%\.ssh\config」ファイルを開きます(無い場合は作成)。

以下の内容を記入します。<接続先エイリアス名>には接続先名として自分が分かりやすい名前を指定してください。

Host <接続先エイリアス名>
  HostName <接続先ホスト名orIPアドレス>
  User <接続先ユーザー名>
  Port 22
  IdentityFile .\.ssh\id_ed25519_ubuntu
【補足】vimで編集開始するときは i キーを押して編集(Insert)モードに入ります。
【補足】vimで編集が終わった後は ESC キーを押したあと「:wq」で保存して抜けます。

接続先のUbuntuサーバーに接続する

ssh <接続先エイリアス名>

これで公開鍵認証でのsshログインが簡単にできるようになりました。

スポンサーリンク

接続先(Ubuntu)の作業手順

パスワード認証を無効化する

まだパスワード認証が有効になっているので、公開鍵認証を使わなくてもパスワードが分かればssh接続できてしまいます。以下の操作でパスワード認証を無効にします。

ssh接続の設定ファイルを開き、編集します。

sudo vim /etc/ssh/sshd_config
編集前
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes   👈 ここのコメントアウト(#)を外して、noにする。
編集後
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no

sshdサービスを再起動する

sudo systemctl restart sshd

sshd_configの設定内容を反映するため、sshd (ssh接続を受ける常駐プログラム) を再起動します。

以上です!

コメント

タイトルとURLをコピーしました