

私も初めてサーバーを触り始めたときは、設定とかよくわからないし、root使ってちゃダメなん?と思っていました。そんなエンジニア駆け出しの頃の私と同じように、
- 初めてサーバー設定をする
- sshとかユーザーとかよくわかっていない
- とりあえずrootでアクセスしてる
というような方へsshの基本的な設定方法をお送りします。
SSHの設定の前にSSHについて

SSHとはセキュアシェル(Secure Shell)の略です。ネットワークを通じて他のコンピューターやサーバーにアクセスして操作することができます。
Webサーバーなんかは基本SSHでログインして設定するし。WindowsのリモートデスクトップとかでもSSHを使用してアクセスできるみたいですね。
※ こういったイメージです。

初めてエンジニアになった時に、リモートアクセスってなんかドキドキしました。
少し古かったりセキュリティが厳しかったり現場だと、ローカルに開発環境を作らないでサーバーにそれぞれの環境を作ってもらって作業する・・とかそんな懐かしい思い出もあります。
サーバーの設定
早速サーバーの設定に入りたいと思います。
※ ピンクの枠線内のお話です。

インストール状況の確認とインストール
まずは必要なものがインストールされているかを確認します。
yum list installed |grep openssh openssh.x86_64 7.4p1-16.el7 @base openssh-clients.x86_64 7.4p1-16.el7 @base openssh-server.x86_64 7.4p1-16.el7 @base
VPSを借りたり、vagrantだったりすると上記の3つは入っています。もし入っていない場合は以下でインストールします。
yum install -y openssh-server
設定ファイルの確認をする
`sshd_config`が設定ファイルです。`/etc/ssh/`の配下には名前がそっくりな`ssh_config`が存在しますが、こちらはクライアント側のシステム全体に設定ファイルですので、間違わないように気をつけましょう。(中身見ればわかるか)
次に`Port` `PermitRootLogin` `PasswordAuthentication`の3つを設定します。それぞれの設定値の意味は以下になります。
- Port – 接続のポートです。デフォルトでは22なので、必要がなれけば22で問題ありません。
- PermitRootLogin – こちらはRootでのアクセスを制御します。今回はrootのログインを禁止するのでnoを指定します。
- PasswordAuthentication – パスワードでの認証の許可・不許可の制御をします。今回はyesを選択します。
rootのsshを禁止する理由はこちら
... #Port 22 # ↓ コメントアウト Port 22 #AddressFamily any ListenAddress 0.0.0.0 #ListenAddress :: # The default requires explicit activation of protocol 1 #Protocol 2 ... # Authentication: #LoginGraceTime 2m # ↓ yes PermitRootLogin yes #StrictModes yes #MaxAuthTries 6 #MaxSessions 10 ... # To disable tunneled clear text passwords, change to no here! #PasswordAuthentication yes #PermitEmptyPasswords no # ↓ yes PasswordAuthentication yes
上記の設定だと、sshの22番ポートに対してroot以外のユーザーはパスワード認証ができる という状態になりました。
さらにユーザーを制御する
さらにsshでログインできるユーザーを制御することが可能です。
- DenyUsers – こちらに該当するユーザーはアクセスすることができません。
- AllowUsers – こちらに該当するユーザーのみがログインすることが可能です。
上記を設定してみます。
DenyUsers hoge fuga
上記はユーザーhogeとユーザーfugaがアクセスすることができません
AllowUsers sage
上記の設定だとユーザーsageのみがログインすることが可能です。
再起動して設定を反映させる
$ systemctl restart sshd
クライアントからアクセスする
最後にサーバーに接続してみます。
※ ピンクの枠線内のお話です。

※ 下記の{SERVER_IP_ADDRESS}にはサーバー
ssh sage@{SERVER_IP_ADDRESS} sage@{SERVER_IP_ADDRESS}'s password:<パスワード入力!>
こちらでアクセスできれば完了です。
もしくはすでにドメインを割り振っていいれば、ドメインを指定してログインすることでも可能です。
ssh sage@hogefugasage.com sage@hogefugasage.com's password: <パスワード入力!>