LoginSignup
0
0

XserverレンタルサーバーにSSHアクセスする

Last updated at Posted at 2024-05-25

概要

Xserverレンタルサーバーを借りたので

  1. SSHアクセスできるようにした
  2. デフォルトで生成された公開鍵の暗号化アルゴリズムがイマイチ(RSA)だったのでEd25519に変更

動作環境

  • macOS Sonoma Version 14.5
  • OpenSSH 9.6p1

Xserverのマニュアル通りに設定してみる

Xserverレンタルサーバーを借りることにしたので、何はともあれSSHアクセスできるように設定を行いました。
Xserverレンタルサーバーは、初心者にもやさしい親切マニュアルが用意されています。 ヘルプも充実していますし悩むことはあまりなさそうです。

とりあえずこのマニュアルに沿ってSSH接続を行ってみます。 ポイントとなるのは

  • パスワード認証はオミットされており、必ず公開鍵認証でログインする必要がある
  • 接続先ポート番号はSSHデフォルトの 22 ではなく 10022

あたりでしょうか。 まずはマニュアル通りに、

  1. Xserverのサーバーパネルのメニューから、[アカウント]>[SSH設定]と進み、[ONにする]を選択、[設定する]ボタンをクリック
  2. [公開鍵認証用鍵ペアの生成]タグから、適当なパスフレーズを入力(ログイン時も使用するので忘れないように)して、[確認画面へ進む]>[生成する]ボタンをクリック

これでサーバ側には新たに生成された公開鍵が保存されるとともに、秘密鍵のダウンロードが始まります。(ファイル名: [サーバーID].key)

ダウンロードされた秘密鍵ファイルを確認しますと、RSAアルゴリズムにより生成されたものでした。

[サーバーID].key
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,440AF4411516...

QB3BzgNhQ3TfHUVD75pv2iMf2lYu+q96cGKKj/Nxep92lcHgZnTzt3pdOq+UrlZc
VvnaCitHmWAzijizEIODzxi//KQsPcM2t14tBR4IvbEeomlLsihl2PIk2Ofoc1fY
        :
Lnz32p+i6kmBPLzffZwBS6bUVbzru9fsvLYPYp5VnhulbAqHHX/LsgaT/5x+I/WH
-----END RSA PRIVATE KEY-----

ヘッダ行が "-----BEGIN OPENSSH PRIVATE KEY-----" ではなく "-----BEGIN RSA PRIVATE KEY-----" で始まっているので、OpenSSH 7.8より前の古い形式のフォーマットと思われます。

ダウンロードした秘密鍵ファイルは、お約束で ~/.ssh/ に移動し、パーミッションを(自分以外アクセス不可に)変えておきます。

$ mv ~/Download/{サーバーID}.key ~/.ssh/
$ chmod 600 ~/.ssh/{サーバーID}.key

さっそくサーバにsshログインしてみます。 ログイン時に必要なのはユーザ名、ホスト名、そして秘密鍵に設定したパスフレーズです。
Xserverローカルルールでは[サーバーID]([サーバー番号]とは異なる)が、実のところログインユーザ名になっています。
また、自分のサーバのホスト名はサーバーパネルの[サーバー情報]から確認できます。(Xserverでは、ホスト名 = [サーバー番号].xserver.jp となっている模様)

$ ssh -p 10022 -i ~/.ssh/{サーバーID}.key {サーバーID}@{サーバー番号}.xserver.jp
The authenticity of host '[サーバー番号].xserver.jp:10022 ([IPアドレス]:10022)' can't be established.
ED25519 key fingerprint is SHA256:SIbxkY1g......Q+cSixBu.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[サーバー番号].xserver.jp:10022' (ED25519) to the list of known hosts.
Enter passphrase for key '[サーバーID].key': ********
[サーバーID@サーバー番号 ~]$

最初のログインなのでまだknown_hostsに登録されておらず、確認を求められますが "yes" を入力し、秘密鍵を作成した際のパスフレーズを入力すれば完了です。
無事ログインできましたので、せっかくですからサーバ側のsshバージョンを確認しておきます。

[サーバーID@サーバー番号 ~]$ which ssh
/usr/bin/ssh
[サーバーID@サーバー番号 ~]$ /usr/bin/ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

7.4、でした…

SSHで使う公開鍵暗号は何がベストか

とりまSSHログインはできたものの、サーバ側のOpenSSHのバージョンはかなり古い上、生成された鍵もRSAという古(いにしえ)のアルゴリズムで生成されてました。
それってセキュリティ的にどうなんでしょう… 私、気になります!

ChatGPTさんに(日本語で)訊いてみた (4.0o)

SSHの公開鍵暗号アルゴリズムは何が良いの?

SSHの公開鍵暗号アルゴリズムにはいくつかの種類があり、それぞれセキュリティとパフォーマンスのバランスが異なります。現在広く使用されているアルゴリズムを、セキュリティとパフォーマンスの観点からおすすめ順に挙げてみます。

  1. Ed25519

    • セキュリティ: 非常に高い
    • パフォーマンス: 非常に高い(鍵の生成や署名、検証が高速)
    • 特徴: 曲線25519を基にした楕円曲線暗号で、従来のRSAやDSAと比べて小さな鍵サイズで同等のセキュリティを提供します。現代的なアルゴリズムで、多くの用途で推奨されます。
  2. ECDSA (Elliptic Curve Digital Signature Algorithm)

    • セキュリティ: 高い(使用する曲線による)
    • パフォーマンス: 高い(Ed25519よりは若干遅いがRSAより高速)
    • 特徴: NISTが標準化した楕円曲線暗号で、一般的にsecp256r1(P-256)などの曲線が使われます。鍵サイズが小さく、従来のアルゴリズムに比べて効率的です。
  3. RSA (Rivest-Shamir-Adleman)

    • セキュリティ: 高い(鍵サイズによる)
    • パフォーマンス: 中程度(鍵サイズが大きくなると遅くなる)
    • 特徴: 最も広く使用されている公開鍵暗号の一つで、セキュリティは鍵サイズ(一般に2048ビット以上が推奨)に依存します。鍵生成や署名・検証の計算が重いことが欠点です。
  4. DSA (Digital Signature Algorithm)

    • セキュリティ: 中程度(現在は非推奨)
    • パフォーマンス: 高い(特に署名の生成が速い)
    • 特徴: 古い標準で、現在は2048ビットの鍵が最低限推奨されていますが、他のアルゴリズムに比べてセキュリティが劣るため、現代ではほとんど使用されていません。

総評

  • Ed25519が現代的な用途に最も適しており、セキュリティとパフォーマンスのバランスが非常に良いです。
  • ECDSAも依然として良い選択肢であり、特に既存のシステムとの互換性が必要な場合に使われます。
  • RSAは依然として広く使われていますが、パフォーマンス面で劣るため、新規システムではEd25519やECDSAに置き換えることが推奨されます。
  • DSAはセキュリティ面で他のアルゴリズムに劣るため、使用は推奨されません。

これらのアルゴリズムは、OpenSSHなどのSSH実装においてサポートされているため、具体的な環境や要件に応じて適切なものを選ぶと良いでしょう。

Googleさんに訊いてみた

検索文字列: best ssh algorithm

検索結果上位2つの記事の結論はどちらも「(特に制限がなければ)Ed25519を使っとけ」ということでした。内容も含めChatGPTさんの見解と一致しています。

Xserverの公開鍵暗号アルゴリズムをEd25519に変更する

Ed25519はOpenSSH 6.5以降でサポートされています。
バージョン 6.5といえば10年も前にリリースされた年代モノ。 2024年の今、よほどカビの生えた残念な環境でなければEd25519は問題なく使えるでしょう。(Xserver環境もOpenSSH 7.4なのでセーフ)

という訳で先に作成したRSA暗号鍵は破棄し、ローカル環境でssh-keygenコマンドを使ってEd25519を使った鍵ペアを新たに作成します。

$ ssh-keygen -t ed25519 -f ~/.ssh/{鍵ファイル名} -C "{コメント}"
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase): ********
Enter same passphrase again: ********
Your identification has been saved in ~/.ssh/[鍵ファイル名]
Your public key has been saved in ~/.ssh/[鍵ファイル名].pub
The key fingerprint is:
SHA256:O/IoKNTFHv4Ga7HkqSYW/idb2NlmB/TUpXZgeWGhtSSfo [コメント]
The key's randomart image is:
+--[ED25519 256]--+
| ...      oo. .  |
|  . .    ..+ +   |
| . . .   .. * .  |
|o+. o     .o + . |
|+oo+... S  E+ .  |
|.o+..+.. . o     |
|oo *..o.o =      |
|+ = +  ++o .     |
| o.o  .o..       |
+----[SHA256]-----+

コメントは省略可。 パスフレーズも無しにできますが、セキュリティ的には設定しておくほうが良いでしょう。

秘密鍵と公開鍵ができましたので、公開鍵のほうをXserverのサーバーパネルから登録します。
[アカウント]>[SSH設定]>[公開鍵登録・更新]タブの公開鍵入力フィールドに、新たに生成した公開鍵(拡張子.pub)の中身をコピペします。
action_user_ssh_publickey.png
"ssh-ed25519 ..."から始まるEd25519の公開鍵はわずか一行。 先に作成したRSA公開鍵と比べればびっくりするくらい短いですが、良いんです。 それで合っています。
公開鍵を貼り付けたら、[確認画面へ進む]>[登録する]をクリックして、公開鍵の登録は完了です。

公開鍵が登録できたので、新しいEd25519の秘密鍵を使ってログインしてみます。(指定する鍵ファイル名が新しいものに変わる以外、オプションはRSAの時と一緒です)

$ ssh -p 10022 -i ~/.ssh/{鍵ファイル名} {サーバーID}@{サーバー番号}.xserver.jp
Enter passphrase for key '[鍵ファイル名]': ********
Last login: Sat May 25 20:10:34 2024 from [アクセス元]
[サーバーID@サーバー番号 ~]$

無事Ed25519の公開鍵認証でログインできました!
先にサーバーパネルから生成したRSA公開鍵は上書きされて消えていますので、古いRSA秘密鍵も不要です。 混乱しないよう消しておくのが良いでしょう。

参考サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0