さくらのレンタルサーバに ssh で接続し、公開鍵認証を使う

目次

必須要件

さくらのレンタルサーバでSSH接続するには、契約プランがスタンダードプラン以上である必要があります。

また、SSHで接続するためにはサーバーパスワードが必要です。
サーバーパスワードは申込時に送られている「仮登録完了のお知らせ」というタイトルのメールに記載されています。

もし、サーバーパスワードを忘れてしまった場合には以下のやり方でサーバーパスワードの再発行が可能です。

  1. 会員メニューにログインする
  2. 「契約中のサービス一覧」をクリック
  3. 「手続き」の中にある「パスワード再発行」をクリックする

SSHでパスワードログインする

まずはテストがてら ssh でパスワードログイン(ユーザ名とパスワードを指定してログイン)してみます。

  • ホスト:「仮登録完了のお知らせ」に記載の「FTPサーバ名」
  • ユーザ名:「仮登録完了のお知らせ」に記載の「FTPアカウント」
  • パスワード:「仮登録完了のお知らせ」に記載の「サーバパスワード」

Windows11のPowerShellの場合、以下のようにして接続します。

ssh <ユーザ名>@<ホスト名>
The authenticity of host 'xxxxx.sakura.ne.jp (xxx.xxx.xxx.xxx)' can't be established.
xxxxxkey fingerprint is SHA256:xxxxx.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'xxxxx.sakura.ne.jp' (xxxxx) to the list of known hosts.
<ユーザ名>@<ホスト名>'s password: <パスワード> ← 入力の反応は返ってこないのが正常です
FreeBSD 13.0-RELEASE-p12 (GENERIC) #0: Tue Sep 12 19:33:31 UTC 2023

Welcome to FreeBSD!

%

これでパスワードを使ったSSH接続ができることを確認できました。
ただ、パスワードを使ったSSH接続では不安があるので、公開鍵認証を使ったログインに変更します。

公開鍵認証を使ったログイン

作業の手順としては以下のようになります。

  1. ローカル側(普段使う端末)で秘密鍵と公開鍵を生成する
  2. 公開鍵をリモート側(さくらのレンタルサーバ)に転送する
  3. リモート側で公開鍵を登録する
  4. 秘密鍵と公開鍵を使ってログインする

秘密鍵と公開鍵を生成する (ローカル側作業)

ローカル側(普段使う端末)で鍵のペアを作ります。
どこで作っても良いのですが秘密鍵を置いておくので、共有されているディレクトリは望ましくありません。
私は、ホームディレクトリの下に Keys というディレクトリを作成して使っていますが、ホームディレクトリ直下に .ssh という名前のディレクトリを使う方が一般的かと思います。

鍵のペアは、接続先サーバごとに作るパターンと、一つのペアを複数の接続先サーバで使いまわすパターンがありますが、セキュリティのことを考えると接続先サーバごとに作るほうが望ましいので、以下の例では接続先サーバごとに作るパターンで説明しています。

Power Shellを起動し、鍵を保存するディレクトリに移動して秘密鍵を生成します。

cd ~/Keys
ssh-keygen -t rsa -f HOGEHOGE # HOGEHOGEの部分は出力先ファイル名に使われるので、接続先の名前(例えばSAKURA01など)にします

以下のような結果になると思います。途中でパスフレーズの入力を求められますが今回はパスフレーズを指定しないのでそのままEnterキーを押下しています。

ssh-keygen -t rsa -f TAMATSUKASA-DEMO
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in TAMATSUKASA-DEMO
Your public key has been saved in TAMATSUKASA-DEMO.pub
The key fingerprint is:
SHA256:xxxxxxx
The key's randomart image is:
+---[RSA 3072]----+
|       xxxxx     |
|       xxxxx     |
|       xxxxx     |
+----[SHA256]-----+

これで、作業したディレクトリに秘密鍵と公開鍵(ファイル名の最後に .pub がつくもの)が生成されます。

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/09/26     23:08           2602 TAMATSUKASA-DEMO
-a----        2022/09/26     23:08            565 TAMATSUKASA-DEMO.pub

公開鍵をサーバに転送する (ローカル側作業)

まず、作成したペアのうち公開鍵をサーバに転送します。
ssh と同じ仕組みでファイル転送を行う scp というコマンドがあるので、これを使うのが一般的です。

ローカル側で

scp <公開鍵のファイル名> <ユーザ名>@<ホスト>:~

のコマンドを実行すると、リモート側のホームディレクトリ直下に公開鍵が転送されます。
私の場合には下記のようになります。

scp .\TAMATSUKASA-DEMO.pub XXXXX@XXXXX.sakura.ne.jp:~
xxxxx@xxxxx.sakura.ne.jp's password:
XXXXXX.pub                                              100%  565    42.3KB/s   00:00

公開鍵をサーバに登録する (リモート側作業)

公開鍵は転送しただけでは効果がなく、転送した公開鍵を、リモート側の「信じて良い公開鍵のリスト」に登録してやる必要があります。
このため、ssh でサーバにログインし(この時はまだパスワードログインです)、リストへの登録を行います。
(接続部分は割愛します)

cat <公開鍵のファイル名> >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

上記作業が完了すれば、リモート側に転送した公開鍵は削除してしまって大丈夫です(authorized_keys に追記で来ているので)。

秘密鍵と公開鍵を使ってログインする

では、秘密鍵と公開鍵を使ってログインします。
ローカル側で下記のコマンドを実行します。

ssh <ユーザ名>@<ホスト名> -i <秘密鍵の場所>

私の場合には下記のようになります。

ssh xxx@xxxxx.sakura.ne.jp -i ~/Keys/TAMATSUKASA-DEMO

先ほどとは違い、パスワード無しでログインできることが確認できます。

おまけ:ssh の設定ファイルに書き込んでおく (ローカル側作業)

上記のように毎回 -i オプションで鍵を指定してもいいのですが、ssh の設定ファイルに諸々のオプションを記載しておくと ssh での接続が非常に便利になります。

Windowsの場合には、メモ帳を起動し、ホーム直下にある .ssh ディレクトリの中の config ファイルを編集します。

host <SSH接続時のキーワード>
	user <ユーザ名>
	hostname <ホスト名>
	identityfile <秘密鍵の場所>

私の場合には下記のようになります。

host SAMPLE
    user xxxxxxx
    hostname xxxxx.sakura.ne.jp
    identityfile C:\Users\xxx\Keys\TAMATSUKASA-DEMO

このような設定をしておくと、コマンド一発で ssh 接続が完了します。

ssh SAMPLE
  • URLをコピーしました!
  • URLをコピーしました!
目次