Contents
手順
今回設定するSSH接続のフローの概要
フォルダ構成
~/.ssh/
│
├── config # SSH接続設定ファイル(テキスト)
│ # 複数サーバーの接続設定を記述可能
│
├── id_rsa # 秘密鍵
│ # 権限: 600(所有者のみ読み書き可)
│ # 絶対に共有しない
│
├── id_rsa.pub # 公開鍵
│ # 権限: 644(所有者は読み書き可、他者は読み取りのみ)
│ # サーバーに登録する
│
└── known_hosts # 接続したことのあるサーバーの情報
# 初回接続時に自動生成
configファイルの例
# デフォルトの設定(すべてのHostに適用)
Host *
# タイムアウトを設定(秒)
ServerAliveInterval 60
# 圧縮を有効化
Compression yes
# 開発サーバーの設定例
Host dev
# サーバーのホスト名またはIPアドレス
HostName dev.example.com
# SSHのポート番号(デフォルトは22)
Port 22
# ログインするユーザー名
User developer
# 使用する秘密鍵の場所
IdentityFile ~/.ssh/id_rsa
# ステージングサーバーの設定例
Host stg
HostName stg.example.com
Port 22
User deployer
# 別の秘密鍵を使用する例
IdentityFile ~/.ssh/staging_key
# 本番サーバーの設定例
Host prod
HostName prod.example.com
# セキュリティのため別ポートを使用
Port 10022
User production
IdentityFile ~/.ssh/production_key
# パスワード認証を無効化
PasswordAuthentication no
~/.ssh/id_rsa
の秘密鍵は以前作成したものを使いまわします
公開鍵をXserverの管理画面で登録

公開鍵を張り付ける
id_rsa.pub
が公開鍵ファイルになります。このファイルの内容をXserverの管理画面にコピー&ペーストすることで、先ほどの秘密鍵(id_rsa
)と対応する公開鍵認証が設定されます。

.ssh/configファイルを使ってssh接続できるようになります:
ssh xserver

SSHコマンドが設定ファイルの読み込みから認証まで、多くのことを自動的に処理してくれます。

ssh接続でのphpバージョンを変更する手順
管理画面ではphpバージョンを新しいものに変えたのに、ssh接続でphp -vをすると昔のバージョンのままという状況
- 管理画面では8.2.22に設定済み
Xserverの管理画面「PHPバージョン切替」では、すでにPHP 8.2.22に設定していました。 - SSH環境では5.4.16のまま
しかし、SSH接続で確認すると
php -v
PHP 5.4.16 (cli) (built: Apr 1 2020 04:07:17)
おそらくWeb環境(管理画面設定)とSSH環境(コマンドライン)のPHPバージョンは別々に管理されているよう
なのでphpコマンドの設定を確認する必要がありそう
binディレクトリ(実行ファイルがいろいろある)
ディレクトリ構成は
/ (ルートディレクトリ)
├── bin/ (システムのbin)
├── home/
│ └── yourname/ (あなたのホームディレクトリ)
│ ├── your-domain.com
│ ├── public_html
│ ├── small.php
│ ├── ssl
│ ├── xxxd
│ ├── .bash_history
│ ├── .bashrc
│ ├── .bash_profile
│ ├── .nodebrew
│ ├── .npm
│ ├── .pki
│ ├── .spamassassin
│ └── .ssh
└── ... (その他のシステムディレクトリ)
binディレクトリがどうなっているかをみてみます
PS C:\Users\username\.ssh> ssh xserver
[username@sv12345 ~]$ ls -a
. .bash_history .bashrc .npm .spamassassin your-domain.com small.php xxxd
.. .bash_profile .nodebrew .pki .ssh public_html ssl
[username@sv12345 ~]$ cd ../../bin/
[username@sv12345 bin]$ ls
phpに絞って再度確認
[username@sv12345 bin]$ ls -l php*
各PHPバージョンのシンボリックリンクが存在(先頭が l、矢印(->)あり)
- lrwxrwxrwx 1 root root 25 9月 5 2023 php7.0 -> /opt/php-7.0.33-3/bin/php
- lrwxrwxrwx 1 root root 25 9月 5 2023 php7.1 -> /opt/php-7.1.33-3/bin/php
- lrwxrwxrwx 1 root root 25 9月 5 2023 php7.2 -> /opt/php-7.2.34-5/bin/php
- lrwxrwxrwx 1 root root 25 9月 5 2023 php7.3 -> /opt/php-7.3.33-3/bin/php
- lrwxrwxrwx 1 root root 25 9月 5 2023 php7.4 -> /opt/php-7.4.33-3/bin/php
- lrwxrwxrwx 1 root root 25 9月 5 2023 php8.0 -> /opt/php-8.0.30/bin/php
- lrwxrwxrwx 1 root root 25 9月 3 2024 php8.1 -> /opt/php-8.1.29/bin/php
- lrwxrwxrwx 1 root root 25 9月 3 2024 php8.2 -> /opt/php-8.2.22/bin/php
- lrwxrwxrwx 1 root root 25 9月 3 2024 php8.3 -> /opt/php-8.3.10/bin/php
つまり
xserverでは各PHPバージョン用のシンボリックリンクがすでに用意されているので、記事の手順を踏まなくてもphp8.3コマンドで新しいPHPが使えます。