【初心者向け】さくらのクラウドにターミナルからSSH接続するための手順＆解説【macOS→CentOS】

##はじめに
初投稿。少し躓いたので備忘録として。
初心者向けにかなり細かく説明していく。

先日、[さくらのクラウド](http://cloud.sakura.ad.jp/)のクーポンコード(2万円分)を頂いたので使ってみることにした。
これはIaaSと言われるサービスのひとつで、見えないところにある仮想マシンにOSを積んでサーバーとして動かすことができる。有名なのだとAWSのEC2とかがそう。
IaaSの読み方は特に決まっていないらしいが、LではなくI(infrastructure)なので注意。
今回はmacOSのターミナルを使ってSSH接続する。

##サーバーの立ち上げ
まずはアカウント作成してクレカ登録(必須)して管理画面(サーバ一覧)まで辿り着く。
今のところ画面はほぼ真っ白で、上の方に「+追加」ってやたら目立ったボタンが見える。押す。

「ディスクイメージを選択」画面が現れる。ざっと下まで眺める。
この時、左上の地名を変更すると料金が変わる(東京は高くて石狩は安い)。石狩のデータセンターは土地代やらが安いっぽい。
今回はコスパ重視で石狩にしておく。ちなみに[このサイト](http://ishikari.sakura.ad.jp)でどんな建物か見られる。ここにあるマシンにOSをインストールして使う。

これからマシンの構成を決めていく。右上の「シンプルモード」にチェックが入っているのを確認。

・まずはOSの種類。今回はデフォルトのCentOSを選択。
・次に料金プラン。値段が高くなるほどマシンのスペックが上がる。*「一番安いのを頼む」*
・接続先のネットワークは「インターネット」で。深く考えない。※スイッチについて知りたい人は「ネットワーク　スイッチ」で検索
・管理ユーザー(root)のパスワードを決める。確認のために2回入力。
・公開鍵は「なし」で。
・ホスト名はたくさん見ることになるのでシンプルなやつに。今回は「sakura」で(後から変えられる)
・作成数は「1」
・最後に合計金額を確認して「作成」※記事を書いてる時点では1954円 / 月

暫く待つとサーバーが追加される。

左のメニューの「サーバ」を選択すると、さっき作った「sakura」が起動している。
「インターフェース」の数字(xxx.xxx.xxx.xxxみたいなやつ)がsakuraのIPアドレス。右クリックでコピーしてメモしておく。
チェックマークを入れて右上の「詳細」を選ぶと細かい設定を確認・変更できる。

ここまできたら管理画面はもう使わない。※管理画面はブックマークしておく。

##ターミナルでの操作
macのターミナルを起動する。
その無機質な画面に早速コマンドを打ち込む。下に解説を付けるので、理解してから打ったほうがいい。
※途中で画面が固まったらキーボードの「control」を押しながら「C」で強制停止
※もし何かができなかったらググる。大抵解決する

`$ ssh root@xxx.xxx.xxx.xxx`

以下、コマンドの説明
$ ：これは打たない。これの前が現在位置で、これの後がコマンド
ssh：SSH接続する
root：管理ユーザーの名前
@〜：接続先(さっきメモしたIPアドレス)

つまり全部半角で`ssh root@xxx.xxx.xxx.xxx`と打ってenterキーをッターン。
「本当に接続する？」と聞かれるので「yes」と打ってenter。
管理ユーザーのパスワードを聞かれるので本日3回目の入力。※入力中に文字が表示されなくても気にしない

[root@sakura ~]# と表示されれば成功。
これで石狩のsakuraサーバーに入れた。

##作業用の一般ユーザーを追加
ところで現在root(管理ユーザー)としてログインしているが、これは結構危ない。下手すると消しちゃいけないファイルとか消してしまう。
そこで最初に他のユーザー(一般ユーザー)を作って、そっちで作業することにする。

`# adduser hoge`

\# ：「$」と同じものでrootバージョン。打たない。
adduser：ユーザーを追加する
hoge：これがユーザー名。好きな名前を入力(短い名前だと画面が見やすい)
英語の文法と同じで動詞が先、目的語が後。Do it.

何も表示が変わらないが、ユーザーができた。
いま作った作業用ユーザーのパスワードを決める。

`# passwd hoge`

passwd：パスワードを決める
hoge：こいつの

パスワードを入力するように言われるので、2回入力。
「すべての認証トークンが正しく更新できました。」と表示されれば成功。

ここで一度ログアウトする。

`# exit`

exit：ログアウトする

Connection to xxx.xxx.xxx.xxx closed. と表示されれば成功。
これで石狩のデータセンターから自分のmacに戻ってきた。

##公開鍵認証の設定(mac側)
もう一般ユーザーとしてパスワードを使ってログインできるようになったが、ただのパスワードを使うより「公開鍵認証」というログイン方法の方が安全なので、その設定を試みる。
現在位置が自分のmacのホームディレクトリ(macの名前:~ 自分の名前)になっていることを確認。
もしなっていなかったら以下のコマンドを打つ。

`$ cd ~`

cd：ディレクトリを移動する
~：ホームディレクトリ

まずは「.ssh」という名前の隠しディレクトリをホームディレクトリの下に作る。※成功しても画面は変化しない

`$ mkdir .ssh`

mkdir：ディレクトリを作る

次に.sshディレクトリに入ってみる。

`$ cd .ssh`

現在位置が「macの名前: .ssh 自分の名前」になっていれば成功。
認証用の鍵を作ってここに隠しておく。

`$ ssh-keygen -t rsa`

ssh-keygen：認証用の鍵を作成
-t：鍵のタイプを決める
rsa：鍵のタイプ

ということで、今回はRSAという種類の鍵を作成。
鍵の名前を決める。その後「パスワードを入れろ」と言われるが、今回はシカトしていい。

`sakura_rsa`

という名前の鍵にする。嫌だったら他の名前でもいい。
パスワードは何も入力せずenterを2回。

四角いキラキラしたAAみたいなやつが表示されたら成功。
これで「sakura_rsa」と「sakura_rsa.pub」という2つのファイルができた。※秘密鍵と公開鍵。詳しくは検索。

作ったファイルをsakuraに送る。

`$ scp sakura_rsa.pub hoge@xxx.xxx.xxx.xxx:~`

scp：ファイルを転送(コピー)する
sakura_rsa.pub：ファイルの名前
hoge@xxx.xxx.xxx.xxx：ユーザー名と転送先
:~　：転送先のディレクトリ。今回はホームディレクトリ。←これ忘れがち。注意。

作業用ユーザーのパスワードを聞かれるので入力。
「100% 398 0.4KB/s 00:00 」みたいなのが表示されれば成功。

##公開鍵認証の設定(さくら側)
sakuraサーバーにログインする。コマンドと一般ユーザーのパスワードを入力。

`$ ssh hoge@xxx.xxx.xxx.xxx`

[hoge@sakura ~]$　と表示されれば成功。一般ユーザーとしてログインできた。
さっき送った鍵が届いているか確認してみる。

`$ ls`

ls：ディレクトリの中身を確認する(隠しファイルとかは見られないので注意)

sakura_rsa.pub がぽつんと置いてあるのを確認。

自分のmacと同じように「.ssh」という名前の隠しディレクトリをホームディレクトリの下に作り、鍵を保存することにする。
ここから先、暫く画面が動かないが気にしない。

`$ mkdir .ssh`

.sshディレクトリのパーミッション(権限)を700に変更して保護しておく。詳しくは検索。

`$ chmod 700 .ssh`

chmod：パーミッションを変更する
700：保護の度合い

.sshディレクトリの中に「authorized_keys」という名前で鍵をコピーする。

`$ cat sakura_rsa.pub >> .ssh/authorized_keys`

cat：ファイルの中身を出力する
\>>：(上書きではなく)新しくファイルを追加する
authorized_keys：サーバー側の鍵の名前。これは変えないこと

authorized_keysのパーミッションも変更する。今回は600で。

`$ chmod 600 .ssh/authorized_keys`

サーバーの細かい設定を変えるために再びrootユーザーになる。注意深く操作すること。
パスワードを聞かれるので、最初に決めた管理ユーザーのパスワードを入力。

`$ su`

su：rootユーザーになる

[root@sakura hoge]# と表示されれば成功。

「sshd_config」という設定ファイルを書き換える。

`# vi /etc/ssh/sshd_config`

vi：「vi」というエディタを使ってファイルを開く
/etc/ssh/sshd_config：ファイルの場所と名前

##sshd_configの編集
ここから先はLinuxコマンドではなくviコマンドで操作することになる。
まずは文字入力がちゃんと半角になっているか確認。
viでファイルを開いた時、初期状態では「コマンドモード」になっている。これでは編集できない。
「a」か「i」を打つと「入力モード」に切り替わって文字を打ったり消したりできる。
コマンドモードに戻りたい時は「esc」を押す。

ファイルを上書き保存するコマンドが:wq

`「esc」 → :wq`

編集内容を破棄(保存しないで終了)するコマンドが:q!

`「esc」 → :q!`

何かミスって最初からやり直したいときに使う。

---

まずは17行目くらいの「Port」を編集。

```
#Port 22
↓
Port xxxx
```

「#」を消すことで、死んでいた設定を有効化できる。
xxxxのところには任意の数字(ポート番号)を入力。
ポート番号は1024以上、できれば49513～65535が望ましい。詳しくは検索。
今回は「49513」を使う。

次に49行目くらいの「PermitRootLogin」を編集。

```
#PermitRootLogin yes
↓
PermitRootLogin no
```

「#」を消して、「yes」を「no」に書き換える。
これでいきなりrootとしてログインできなくなる。

56、57行目くらいの「RSAAuthentication」と「PubkeyAuthentication」を編集。

```
#RSAAuthentication yes
#PubkeyAuthentication yes
↓
RSAAuthentication yes
PubkeyAuthentication yes
```

「#」を消して有効化する。
これで鍵認証できる。

61行目くらいの「AuthorizedKeysFile」を編集。

```
AuthorizedKeysFile .ssh/authorized_keys
↓
AuthorizedKeysFile /home/hoge/.ssh/authorized_keys
```

鍵のありかをしっかり伝える。hogeは一般ユーザーの名前。

81行目くらいの「PasswordAuthentication」を編集。
少し上に同じ項目があるが、気にしない。#のままでいい。

```
PasswordAuthentication yes
↓
PasswordAuthentication no
```

これでパスワードによるログインを廃止する。

viによるconfigの編集は以上。
「esc」でコマンドモードに切り替えて:wqと入力し保存。

`「esc」 → :wq`

---

保存したconfigファイルは再読み込みしないといけない。
※デフォルトのCentOS7向けに書き直しました。編集リクエストありがとうございます。

`# systemctl restart sshd.service`

systemctl：デーモン(常駐サービス)等の各種サービスを扱う
restart：再起動する
sshd：SSH接続を司るデーモン

ちなみにデーモン(Daemon)とは守護神という意味らしい。

デーモンさん(sshd)が正常に動いているか確認する。

`# systemctl status sshd.service`

status：状態を確認する

「Active: active (running)」や「Server listening on :: port 49513.」あたりを確認。
これでしっかり動いているのが確認できた。

##ファイアウォールの設定
続いてファイアウォール(アクセス制御を司るデーモン)の設定を変更。

`# vi /usr/lib/firewalld/services/ssh.xml`

入力モードで下の方にある port protocol="tcp" port="22"/ の「22」を「49513」に書き換える。
これがsshdのconfigと食い違っていると接続できない。
コマンドモードにして保存。

configと同じようにファイアウォールも再読み込み。

`# systemctl reload firewalld.service`

reload：再読み込みする

※これでもしエラーが出たら

`# systemctl start sshd.service`

start：起動する

ーーこれで全ての設定が終了。

が

ここでログアウトしてはいけない。
もし何かの設定をミスっていたら二度とサーバーに入れなくなってしまう可能性がある。
そこで、ターミナルをもうひとつ開いて、そこからサーバーに入れるか確認する。

##正常にSSH接続できるか確認
「command」を押しながら「N」を押すか、上のメニューの「シェル」→「新規ウインドウ」→「新規ウインドウ」

(新しい画面で)現在位置が自分のmacになっているか確認。コマンドを打つ。

`$ ssh hoge@xxx.xxx.xxx.xxx -i ~/.ssh/sakura_rsa -p 49513`

-i：鍵の場所と名前を指定する
-p：ポート番号を指定する

[hoge@sakura ~]$ と表示されれば成功。お疲れ様でした。
あとはウェブサービス作るなりして遊ぼう。

ちなみにホームディレクトリに残っている「sakura_rsa.pub」は削除して構わない。

`$ rm sakura_rsa.pub`

rm：ファイルを削除する

これで綺麗になった。

##……ところで、
ログインする時のコマンド長すぎない？毎回これを打つ？コピペする？
というのを解消するためにmac側のconfigを設定してコマンドを短縮する。

まずはサーバーから自分のmacに戻ってくる。

`$ exit`

続いて、ホームディレクトリの.sshの中にconfigを作成する。

`$ vi ~/.ssh/config`

.sshの中に「config」という新しいファイルができる。これをviで編集。
ちなみにviじゃなくて普通のテキストエディタでも編集できる。その場合は拡張子を付けずに保存すること。

configの中身を記述する。入力モードへ。

```
Host sakura
    Hostname xxx.xxx.xxx.xxx
    User hoge
    Port 49513
    IdentityFile ~/.ssh/sakura_rsa
	IdentitiesOnly yes
```

Host：接続先の名前。好きに決めていいやつ
Hostname：接続先のIPアドレス(あるいはドメイン)
User：ユーザー名
Port：ポート番号
IdentityFile：鍵の場所と名前
IdentitiesOnly：これをyesにしておくと他の設定を追加した時にエラーになりにくい。詳しくは検索。

記述完了。コマンドモードで保存する。

これで短縮されたコマンドを使えるようになった。sshと打ってconfigにあるHostを指定するだけ。

`$ ssh sakura`

[hoge@sakura ~]$ と表示されれば成功。今度こそお疲れ様でした。

もし全部正しく設定できているのに急に接続できなくなったりしたら、さくらのクラウドの管理画面でサーバーの再起動などを試すこと。

##参考
[こちらの記事](http://memo.brdr.jp/post/97200662606/%E3%81%95%E3%81%8F%E3%82%89%E3%81%AEvps%E5%80%9F%E3%82%8A%E3%81%9F)がとても役に立ちました。
今では少し情報が古くなっているので注意。