必須要件
さくらのレンタルサーバでSSH接続するには、契約プランがスタンダードプラン以上である必要があります。
また、SSHで接続するためにはサーバーパスワードが必要です。
サーバーパスワードは申込時に送られている「仮登録完了のお知らせ」というタイトルのメールに記載されています。
もし、サーバーパスワードを忘れてしまった場合には以下のやり方でサーバーパスワードの再発行が可能です。
- 会員メニューにログインする
- 「契約中のサービス一覧」をクリック
- 「手続き」の中にある「パスワード再発行」をクリックする
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接続では不安があるので、公開鍵認証を使ったログインに変更します。
公開鍵認証を使ったログイン
作業の手順としては以下のようになります。
- ローカル側(普段使う端末)で秘密鍵と公開鍵を生成する
- 公開鍵をリモート側(さくらのレンタルサーバ)に転送する
- リモート側で公開鍵を登録する
- 秘密鍵と公開鍵を使ってログインする
秘密鍵と公開鍵を生成する (ローカル側作業)
ローカル側(普段使う端末)で鍵のペアを作ります。
どこで作っても良いのですが秘密鍵を置いておくので、共有されているディレクトリは望ましくありません。
私は、ホームディレクトリの下に 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