はじめに
レンタルサーバでロリポップを使用しているのですが、デフォルトの設定だと SSH 接続の際に毎回パスワードを入力しないと駄目なので結構面倒に感じていました。
今回、自分で SSH の公開鍵と秘密鍵を作成してパスワードフレーズ無しで接続できるように設定したのでその方法を書いていきます。
作業環境
- Windows11
- WSL2
公開鍵と秘密鍵を作成する
ここではロリポップの管理画面で SSH 接続を有効化していることを前提としています。
設定を完了していると、管理画面から SSH 接続の項目に移動すると以下のような画面が表示されると思います。
該当のサーバへ SSH 接続します。
ssh [アカウント名]@[ホスト名] -p[ポート番号]
# ログイン時にパスワードの入力を求められるので入力する
ログインしたディレクトリでls -la
コマンドを実行すると.ssh/
ディレクトリが存在していることを確認します。
そのディレクトリに移動して SSH Kye を生成します。
$ cd .ssh/
# SSH Kye を ed25519 で作成する
$ ssh-keygen -t ed25519 -C "your_email@example.com"
Generating public/private ed25519 key pair.
Enter file in which to save the key (キーの保 存先): # パスワードは空でEnter
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
# 生成された鍵を確認
$ la -la
id_ed25519 # 秘密鍵
id_ed25519.pub # 公開鍵
作成された公開鍵の名前を変更し、ユーザ権限を 600 にします。
$ mv id_ed25519.pub authorized_keys
$ chmod 600 authorized_keys
# 権限が rw- のみになっていることを確認
$ ls -la
-rw------- 1 LolipopUser 419 5月 20 00:57 id_ed25519
秘密鍵をローカルに移動する
SCP コマンドを使用して、サーバの秘密鍵をローカルに移動します。
# scp ユーザ名@リモートのホスト名:コピーしたいリモートのファイル ローカルのコピー先
# ローカル側で実行
$ scp -P ポート番号 [アカウント名]@[ホスト名]:/[デ ィレクトリのパス]/.ssh/id_ed25519 /home/user01
# SSH Keyのパスワードを入力する
# 秘密鍵をローカルの.sshフォルダに移動する
$ mv id_ed25519 .ssh/
ダウンロードしてきた SSH Key でサーバへ接続する
ローカル側より以下のコマンドを実行してサーバへ接続します。
$ ssh -v -i ~/.ssh/id_ed25519 [アカウント名]@[ホスト名] -pポート番号
# サーバ側の秘密鍵は削除しておく
$ rm .ssh/id_ed25519
ssh config ファイルを作成する
毎回、鍵の名前やホスト名など指定するのは面倒なので ssh config ファイルを作成します。
作業はローカル側で実施します。
$ cd ~/.ssh/
$ vim config
Host 任意の接続名(hoge)
HostName ホスト名
User ユーザー名
Port ポート番号
IdentityFile 鍵へのPATH(例えば~/.ssh/hoge.key)
今回は任意の接続先をlolipop
としました。接続できるか確認します。
$ ssh lolipop
# 接続成功
[xxxxxxxx@spd103 ~]$
これだけの記述で接続できるようになりました。
元のパスワード方式で接続したい場合は、サーバ側で作成した公開鍵を削除するとデフォルトの接続に戻ります。
$ rm .ssh/authorized_keys