SSH接続

まずは、VPSを契約している会社が運営しているHPなどで、サーバの電源を入れてください。さくらVPSの場合は、コントロールパネルが該当します。


基本的なSSH接続

サーバのipアドレスがxxx.xxx.xxx.xxxの場合、自前のPCから以下のコマンドを打つことで、そのサーバにログインすることができる。ただし、大学などのセキュリティが厳しいネットワークでは、SSHコマンドの使用が許可されていない場合がある。その場合は、自前のwifiなどを使用する必要がある。

以下、契約初期段階によるssh接続方法である。ルート接続などと呼ばれる方式である。ルートとは、すべての権限が与えられたアカウントであることを意味する。ルート権限によるSSH接続および切断は、ターミナルで以下のコマンドを打てば良い。

ルート権限によるSSH接続:

ssh root@xxx.xxx.xxx.xxx

SSH接続の切断:

exit

ただしこれは、ipアドレスとパスワードがバレた段階で、サーバを乗っ取られる。かなり危険なログイン方法である。したがって、このようなログインは禁止せねばならない。これを解消する基本的な方法に、以下2つの基本的なセキュリティがある。

・ポート番号を指定したログイン
・ルートでのログインを禁止する

次節では、これについて言及する。


ポート番号を指定したSSH接続

まずは、firewallを起動する。

systemctl start firewalld

コンピュータとは、ipアドレスに対してポートと呼ばれる穴を開けて、様々な接続を許可する。サーバへのログインもその一つである。一般的なOSは、22番ポートによりSSH接続が設定されている。上で示したログイン方法では特にポート番号を指定していないが、これは、無設定だと22番が与えられることを意味している。このことから、サーバを乗っ取ろうとするクラッカーなどは、22番ポートだという前提でログイン攻撃を仕掛けてくる。

そう考えておくと、SSH接続を22番ポート以外にするだけで、かなり強力なセキュリティとなることがわかる。SSH接続のポート番号を変更するには、SSH接続済のターミナルで以下のコマンドを打つ。

vim /etc/ssh/sshd_config

ここから#port 22を探し、port ffffに変更する。fffは変更するポート番号である。続いて、変更した設定を反映させるために、以下のコマンドを打つ。

systemctl restart sshd.service

続いて、firewallの設定を行う。firewallとは、サーバ・外部ネットワーク間のあらゆる接続を監視しているセキュリティの壁のようなものであり、ここでも、SSH接続するポート番号を教えてあげなくてはならない。このため、

cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/
vim /etc/firewalld/services/ssh.xml

で設定ファイルを開き、ポート番号を22番から先ほど指定した番号に変更する。その後、変更を反映させるために、firewallをリロードする。

firewall-cmd --reload

最後に、再度sshdを再起動する。

systemctl restart sshd

以上一連の操作を行うと、ここで指定したポート番号を指定しないと、ログインできなくなる。ポート番号を指定したルート権限によるSSH接続は以下の通り。

ssh -p fff root@xx.xxx.xxx.xxx

exitでssh接続を切り、これで入れるか、22番ポートや元々の接続方法では入れないか、チェックしてみると良い。


一般ユーザでのSSH接続

続いて、もう一つのセキュリティ方法について説明する。root権限とは、なんでも自由な操作が許されているアカウントであった。したがって、root権限でログインするのがそもそもまずいのではないか、となる。そのため、root権限でのログインを禁止するのがセキュリティの基本である。しかし、root権限でログインを禁止してしまったら、そのサーバにはサーバ管理者である自分ですら、入れなくなる。そのため、一般ユーザという新規アカウントを発行し、そのユーザでのみアクセスできるようにする。一般ユーザの発行方法は、root権限でSSH接続した後に、ターミナルで、

adduser zzz

と打てば良い。zzzは追加するユーザ名である。その後、このユーザのパスワードを設定する。このためには、以下のように打つ。

passwd zzz

zzzはユーザ名で、このように打つと、パスワード入力欄が出るので、打ち込む。これでパスワード設定が完了する。

ユーザが追加されたか確認したい場合は、以下のコマンドで確認できる。

cat /etc/passwd

ユーザを削除したい場合は、以下のコマンドを利用する。

userdel zzz

一般ユーザが追加できたところで、そのユーザでSSH接続ができるかチェックする。exitコマンドでSSH接続を切り、以下のコマンドで接続する。

exit
ssh -p fff zzz@xxx.xxx.xxx.xxx

fffはSSH接続を許可しているポート番号、zzzは追加したユーザである。ここでパスワードが要求されますが、そこでは、rootではなく、zzzのパスワードを入力する。パスワード入力画面から戻れなくなったら、「:q」で退避できる。



ここから下は、ルート権限によるSSH接続を禁止にする説明を行なっています。必ず、一般ユーザでSSH接続ができたことを確認してから行なってください。もし、一般ユーザでSSH接続ができない状態で、ルート接続を禁止してしまったら、サーバ管理者を含めたあらゆる人物が、そのサーバにログインできなくなります。

ユーザの追加ができたところで、ルート権限によるSSH接続を禁止する。このためには、root権限へログインの上、

vim /etc/ssh/sshd_config

と入力する。#PermitRootLogin yesを探しPermitRootLogin noに変更する。#はコメントアウトにするための記号なので、外し忘れないように注意する。


一般ユーザからrootへのスイッチ

これで、あらゆる権限が付与されたrootユーザでのSSH接続が禁止された。一方、一般ユーザの権限は厳しいので、サーバを自由に操作できなくなる。このため、一般ユーザでSSH接続した後、root権限へとスイッチする。このためには、一般ユーザとしてSSH接続した状態で、以下のコマンドを打つ。

su –

これで、root権限のアカウントへ移行できる。ターミナルを見ると「$」から「#」に切り替わったことが確認できる。「$」は一般ユーザで、「#」はroot権限によるアカウントである。


SSH接続に関するトラブルシューティング

サーバの電源を入れていない。
→ VPSの電源を入れる。

セキュリティの強いwifiなどを使用している。
→ 自前のネットワークを利用する。

パスワードが間違っている。
→ 確認すること。
→ メモしていなければ終わりなので、注意。

ルート権限でのログインを不許可しているのに、ルート権限でログインしようとしている。
→ 一般ユーザでログインすること。
→ メモしていなければ終わりなので、注意。

ポート番号を指定しているのに、ログイン時にそれを設定していない。
→ 指定されたポート番号でログインすること。
→ メモしていなければ終わりなので、注意。

よくわからない。
→ とりあえずサーバを再起動すればいけることもある。