レンタルサーバにSSH接続をする方法(エックスサーバー、さくらのレンタルサーバ)

サーバとSSH接続する方法はいくつかありますが、ソフトを使わずにコマンドライン上での接続について書いています。また、サーバはエックスサーバーとさくらのレンタルサーバを対象にしています。

事前準備

エックスサーバーは、デフォルトではSSH接続が無効になっているので、コントロールパネルでSSH接続を有効にしておきます。

パスワード認証の場合

エックスサーバーは、パスワード認証を許可していませんが、さくらのレンタルサーバは可能なようです。

$ ssh [アカウント名]@[アカウント名].sakura.ne.jp

上記コマンドを打つと、パスワードを聞いてくるので、入力するとログインできます。

※ [ ](かっこ)は不要で、直接アカウント名を書きます。

鍵認証の場合(こちらがおすすめ)

こちらは、毎回パスワードを入力しなくてもいいように、ローカル側とサーバ側にそれぞれ鍵(暗号化された文字列が書かれたファイル)を置いて、それを使って認証する方法です。

鍵の作成

過去記事を参考に作成してみてください。

SSH接続の鍵(キー)の作成

作った鍵をサーバに設置

エックスサーバーは、コントロールパネルで設置可能ですが、さくらのレンタルサーバはコマンドで設置します。

さくらのレンタルサーバ

$ scp ~/.ssh/id_rsa.pub [アカウント名]@[アカウント名].sakura.ne.jp:/home/[アカウント名]/.ssh/authorized_keys

作った鍵の公開鍵側のファイルを、サーバのルートディレクトリに「.ssh」というディレクトリを作って「authorized_keys」という名前で保存しています。

「scp」コマンドは、ファイルをコピーして転送するコマンド。転送元の場所の後に、転送先を書く。

エックスサーバー

コントロールパネルの「SSHの設定」の「公開鍵の登録」に、ローカルで作った公開鍵ファイル「id_rsa.pub」の中身をコピーしてペーストします。(エックスサーバーでは、鍵の作成もここでできるようです。)

接続

#さくらのレンタルサーバ(先ほどと同様)
$ ssh [アカウント名]@[アカウント名].sakura.ne.jp

#エックスサーバー
$ ssh -l [サーバーID] -i .ssh/id_rsa [サーバーID].xsrv.jp -p 10022

エックスサーバーでは、秘密鍵「id_rsa」の場所とポートを指定する必要があるようです。秘密鍵「id_rsa」の場所は、適切な場所に置いてあれば省略可能。

パスフレーズを設定していれば、聞かれるので入力します。

※[アカウント名]、[サーバーID]は、それぞれのサーバでの名称が異なるだけで、ユーザー名的なものを指しています。

パーミッションの変更

さくらのレンタルサーバの場合は、設置した公開鍵ファイルのパーミッションを変更しておきます。

$ chmod 600 .ssh/authorized_keys

サーバ側でのコマンド

接続コマンドの簡略化(おまけ)

configファイルを設置することで、接続コマンドを簡略化することができます。
ローカルの「.ssh」フォルダの中に、「config」という名前のファイルを作成して、以下の内容を書きます。

#さくらのレンタルサーバ
Host sakura
  HostName [アカウント名].sakura.ne.jp
  Port 22
  User [アカウント名]
  IdentityFile ~/.ssh/id_rsa

#エックスサーバー
Host xsrv
  HostName [サーバーID].xsrv.jp
  Port 10022
  User [サーバーID]
  IdentityFile ~/.ssh/id_rsa

「Host」の部分は、自分の好きな文字を入れます。この文字を使って簡単に接続できるようになります。
上記のように複数のサーバを設定する事ができます。

設置後に、以下のようなコマンドで接続が可能になります。

$ ssh sakura

または

$ ssh xsrv

ついでの設定

さくらのレンタルサーバの接続後のシェルが、デフォルトでは「csh」なので、使いやすい「bash」に変更する方法

$ chsh -s /usr/local/bin/bash

パスワードを聞かれるので、サーバ接続のパスワードを入力。

一度「exit」して、再度接続すると、「bash」に変わっているはずです。

補足

エックスサーバで、最初に接続する時に、以下のような事を言われるかもしれません。

The authenticity of host ‘[サーバーID]:10022 ([サーバーID]:10022)’ can’t be established.
ECDSA key fingerprint is SHA256:V0GmZVuUlP6tQw5MYbGelfcq+IQwq/6+HnH1OPAcaLo.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

「yes」と入力すると、

Warning: Permanently added ‘[サーバーID]:10022,[サーバーID]:10022’ (ECDSA) to the list of known hosts.
Connection closed by [サーバーID] port 10022

と言われて、接続が切れますが、次回からは、接続コマンドで普通に接続できるようになります。