さくらのレンタルサーバへSSHログインする、mysqlコマンドでSQLでDB操作も

さくらインターネットのレンタルサーバへのSSH接続(パスワード認証と鍵認証の両方)についてと、mysqlコマンドでDBサーバのMySQLへ接続して、SQLでDB操作・確認する方法について説明しています(説明や情報は、2022年2月時点のものです)。

さくらのレンタルサーバにSSHログインする(パスワード認証)

最終更新日:2022/9/17

さくらのレンタルサーバでは、レンタルサーバにSSH接続して、サーバのシェル上でコマンド操作をする事ができます。

SSH接続は、ライトプランではできないようです。スタンダードプラン以上の上位プランのみ可能です。
シェルログイン、さくらのレンタルサーバ
プラン比較、さくらのレンタルサーバ

さくらのレンタルサーバを契約すると、[さくらのレンタルサーバ] 仮登録完了のお知らせというメールが届くと思いますが、このメールにSSHログインするための初期ドメイン、FTPアカウント名、サーバパスワードなどの情報が含まれています。

実際にSSH接続してみます。SSHコマンドを実行するとパスワードを要求されるので、サーバパスワードを入力すればサーバにログインする事ができます。
(* "hogemoge"はFTPアカウント名、"hogemoge.sakura.ne.jp"は初期ドメインです。人によって違うので置き換えてください)

$ ssh hogemoge@hogemoge.sakura.ne.jp
hogemoge@hogemoge.sakura.ne.jp's password: 
Last login: Fri Sep 16 23:08:32 2022 from 〜
FreeBSD 13.0-RELEASE-p12 (GENERIC) #0: Tue Sep 12 12:13:30 UTC 2023

Welcome to FreeBSD!

%

初期ドメインの部分は、サーバのグローバルIPアドレス、もしくは、サーバのホスト名を指定してもSSH接続できます。

$ #さくらサーバのグローバルIPアドレスを指定してSSH接続する
$ ssh hogemoge@***.***.***.***
〜
Welcome to FreeBSD!
% exit
logout

$ #さくらサーバのホスト名を指定してSSH接続する
$ ssh hogemoge@wwwXXXX.sakura.ne.jp
〜
さくらのレンタルサーバのグローバルIPアドレスとホスト名の情報は、さくらのコントロールパネルの"サーバー情報"->"サーバー情報"で確認できます。

SSH接続できたら、サーバ上で試しに適当なコマンドをちょっと実行してみます。

さくらのレンタルサーバは共有サーバなのでroot権限(管理者権限)はありません。ですのでサーバ上でどんなコマンドでも実行できる訳ではないです。 その代わり、色々なツールやミドルウェアのバージョン管理やセキュリティ関連の保守運用などはさくらの運営さんがやってくれるので、私たちがやる必要がないので手間がかかりません!ちなみにroot権限(管理者権限)が欲しいなら、さくらのVPSかさくらのクラウドを使う必要があると思います。

unameでシステム情報を確認してみます。

% uname -a
FreeBSD ~
グローバルIPアドレスを確認します(jqコマンドも最初から使えました)。
% curl -s ipinfo.io | jq -r '.ip'
***.***.***.***
PHPのバージョンを確認します。
% php -v
PHP 7.4.30 (cli) 〜
プロセスの確認をしてみます。
% ps -ux
USER      PID %CPU %MEM    VSZ   RSS TT  STAT STARTED    TIME COMMAND
〜

さくらのレンタルサーバにSSHログインする(鍵認証)

上記のSSH接続はパスワード認証でしたが、鍵認証でSSH接続する事もできます。鍵認証にすれば、毎回パスワードを入力する必要がなくなります。

まず、ssh-keygenコマンドで鍵(公開鍵と秘密鍵)を作成します。

下記のssh-keygenコマンドは、自分のPC(Macのターミナル上)で実行していますが、さくらのサーバにSSHログインして、サーバのシェル上でssh-keygenを実行して鍵を作る事もできます。

ssh-keygenを実行すると、最初に鍵名の入力を求められます。鍵名は指定せずにエンターを押しても良いですし、適当な名前を付けても良いです。
私は(下のコマンド例では)、sakurars_id_rsaという名前の鍵にしました。鍵名を指定しない場合はid_rsaという鍵名になります。
鍵名の後に、鍵のパスワードの入力も求められますが、パスワードは何も指定せずにエンターを押しました。

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/hogeuser/.ssh/id_rsa): /Users/hogeuser/.ssh/sakurars_id_rsa
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/hogeuser/.ssh/sakurars_id_rsa.
Your public key has been saved in /Users/hogeuser/.ssh/sakurars_id_rsa.pub.
The key fingerprint is:
SHA256:zUjriweEioewotei1c~ hogeuser@hogeuser-MacBook-Pro.local
The key's randomart image is:
+---[RSA 3072]----+
|O==B+. oo.o      |
〜
|@o*oo E o*       |
|                 |
+----[SHA256]-----+
$
鍵を作成できました。~/.sshディレクトリにできているはずなので、確認してみます。
$ ls -lh ~/.ssh/
total 120
-rw-r--r--@ 1 hogeuser  staff   826B  7 27  2020 config
-rw-------  1 hogeuser  staff    20K 12  2 04:22 known_hosts
-rw-------  1 hogeuser  staff   2.5K 12 28 05:26 sakurars_id_rsa
-rw-r--r--  1 hogeuser  staff   581B 12 28 05:26 sakurars_id_rsa.pub
〜
2つの鍵ができています。sakurars_id_rsa.pubが公開鍵で、sakurars_id_rsaが秘密鍵です。
秘密鍵はこのまま自分のPCで使い、公開鍵はさくらのレンタルサーバにアップロードします。

公開鍵(sakurars_id_rsa.pub)のサーバへのアップロードは、scpコマンドでやります。scpはセキュアにリモート間のファイル転送できるコマンドです。

それではscpコマンドを実行します。コマンド実行時にはさくらのサーバパスワードの入力を要求されます。
(scpコマンドにある3箇所のhogemogeは、さくらのレンタルサーバのアカウント名なので、各自置き換えてください。 あと、公開鍵はサーバ上でauthorized_keysというファイル名にして、/home/hogemoge/.sshディレクトリに置くようにしています。)

$ scp ~/.ssh/sakurars_id_rsa.pub hogemoge@hogemoge.sakura.ne.jp:/home/hogemoge/.ssh/authorized_keys
hogemoge@hogemoge.sakura.ne.jp's password: 
sakurars_id_rsa.pub                                                                                 100%  581    90.7KB/s   00:00  
次に、さくらのサーバにSSH接続して(まだこの時点ではパスワード認証)、今アップした公開鍵(authorized_keys)のパーミッションを600に変更します。
$ ssh hogemoge@hogemoge.sakura.ne.jp
hogemoge@hogemoge.sakura.ne.jp's password: 
〜

% ls -lh ~/.ssh
total 4
-rw-r--r--  1 hogemoge  users   581B Dec 28 05:35 authorized_keys

% chmod 600 ~/.ssh/authorized_keys

% ls -lh ~/.ssh
total 4
-rw-------  1 hogemoge  users   581B Dec 28 05:35 authorized_keys 

次に、自分のPCに戻って、~/.ssh/configファイルに、さくらのレンタルサーバへのSSH接続情報を設定します。
~/.ssh/configに、以下の情報を追記します(configファイルが無ければ新規作成で)。
sakurarsは適当なホスト名です。2箇所のhogemogeはさくらのアカウント名です。

Host sakurars
  HostName hogemoge.sakura.ne.jp
  Port 22
  User hogemoge
  IdentityFile ~/.ssh/sakurars_id_rsa
これで、"ssh sakurars"コマンドだけで、パスワード無しでSSH接続できるようになります。
$ ssh sakurars
Last login: Tue Dec 26 05:33:28 2021 from 
FreeBSD 11.2-RELEASE-p14 (GENERIC) #0: Mon Aug 19 22:38:50 UTC 2019

Welcome to FreeBSD!

% 
sshコマンドはシンプルになったし、鍵認証にする事でパスワードを入力する必要もなくなりました!

さくらのレンタルサーバのシェル上で、mysqlコマンドでDBのデータ操作・確認をする

さくらのレンタルサーバでは、DBのMySQLを使えます。 サーバコントロールパネル上からMySQLのDBを作成できますし、DBのアクセスツールのphpMyAdminも使えるのでphpMyAdminでDBのデータ確認・操作をする事ができます。
さくらのレンタルサーバでMySQLのphpMyAdmin

また、phpMyAdminだけでなく、SSHでさくらのレンタルサーバに接続して、レンタルサーバのシェル上でmysqlコマンドを実行してデータベースサーバのMySQLに接続できるので、そこでsqlを使ってMySQLのデータ確認・操作をする事も可能です。コマンド操作に慣れている人は、恐らくこちらの方が楽でしょう。

mysqlコマンドで接続できるのはさくらのレンタルサーバ上からです。その他のリモートPCから試してみたけど接続できませんでした。

レンタルサーバのシェル上で下記のようにmysqlコマンドを実行して、MySQLのDB作成時に決めたパスワードを入力すれば、DBサーバのMySQLへ接続できてMySQLプロンプトが表示されます。
("mysql33.hogemoge.sakura.ne.jp"はDBサーバのホスト名、"hogemoge"はユーザ名です。)

% mysql -h mysql33.hogemoge.sakura.ne.jp -u hogemoge -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 
Server version: 5.7.XX-log MySQL Community Server (GPL)
〜
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

DBサーバのホスト名とユーザ名は、サーバコントロールパネル上の"Webサイト/データ"->"データベース"で確認できます。
さくらのレンタルサーバのMySQLのホスト名とユーザ名を確認する