環境
接続元 | Windows |
接続先 | Ubuntu 22.04 LTS Server |
接続元(Windows)の作業手順
前準備
WindowsでPowershellを起動します。
公開鍵認証用のキーペアを作成
cd $env:USERPROFILE
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 ed25519 | ed25519暗号化アルゴリズム |
-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接続を受ける常駐プログラム) を再起動します。
以上です!
コメント