サーバーつくった。その3 – SSHでログインするよ。
サーバー作ったとはいえコピペもできない、ログも20行くらいしかみれない。文字がでかい。
いつも使ってるマウスとキーボードじゃないなどなど、使いづらいったらありゃしない。
というわけで一般的にこういうサーバーはSSHをつかって他のパソコンからログインして操作するらしいよ。
インストールのときはほとんどOFFにしてインストールしたけどSSH入ってます。
ただ、このままSSHを利用するのは危険です。新規ユーザーを作成してrootからはログインできないようにしましょう。
//以降はコメントなので入力しない事。
ではまずCentOSにrootユーザーでログインします。
centos login: _
となっているのでrootと入力し、rootのパスワードを入力します。
パスワード入力のときにいくらキーをうっても表示されないのは仕様です。
ログインしたら早速新規ユーザーを作成しましょう。
ちなみに#から始まるのはrootユーザー権限であるという意味なので覚えておくと便利ですよ。
rootユーザーでないときは$から始まります。
(Macはrootユーザーになれない設定になっているので#とかかれていたら「sudo 」とコマンドの前に追加してその行だけ一時的にroot権限になる必要があります。)
# useradd ユーザー名
ユーザー名は任意に置き換えて下さい。ただし、小文字の英数字が無難でいいですよ。
そのまま作成したユーザーにパスワードを設定します。
# passwdユーザー名
Changing password for user ユーザー名.
New UNIX password: //ここでパスワードを入力。キーをうっても表示されないので注意。
Retype new UNIX password: //再入力
passwd: all authentication tokens updated successfully.
次にルートになれるユーザーを制限しましょう。
制限する前に、作成したユーザーを管理者権限のあるグループに所属させます。
# usermod -G wheel ユーザー名
//確認します。
#cat /etc/group
//wheel:x:10:root,ユーザー名と書いてあればOK。
次にwheelグループ以外のユーザーはrootになれないように設定します。
# nano /etc/pam.d/su
ここでnanoを指定しましたがviなどのエディタでも全然大丈夫です。
ただnanoの方が若干直感的に使えるので、初めての人やちょっとした設定には便利です。
#auth required pam_wheel.so use_uid
と書いてある行を探し先頭の#を削除して保存します。
nanoの人はCtrl+Oを押すと下のハイライトされている行にファイル名がでてくるのでそのままEnterし、Ctrl+Xを押してエディタを終了します。
これで新しいユーザーを追加し、管理者権限をあたえ、管理者権限あるユーザー以外はrootになれなくなりました。
あとはrootからSSHログインできないようにします。
# nano /etc/sshd_config
#PermitRootLogin yes
//先頭の#を削除、yesをnoにし、rootでのSSHログインをOFFにします。
PermitRootLogin no
SSHサーバーを起動します。また起動時に起動するように設定します。
# /etc/rc.d/init.d/sshd start
# chkconfig sshd on
余談ですがsshdというのはSSH Deamonの事です。
設定できているかチェックしましょう。
# chkconfig --list sshd
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
//2~5がonになってます。
SSHから作成したユーザーでのみログインできるようになりました。
ここからはMacの作業になります。
Terminal.appを起動。
ログインしてみる。
//ユーザー名はCentOSで作成したユーザー名
//IPはインストール時に設定したIP
$ ssh ユーザー名@IP
yes/no?って聞かれる場合はyesを選択。恐らく初回接続時には聞かれます。
パスワードをきかれるので作成したユーザーのパスワードを入力します。
rootになってみる。
$ su - //ハイフン(-)を入れること
rootパスワードを入力すると先頭が$から#に変わります。
# whoami
root //現在のユーザーはrootとなります。
元のユーザーに戻りたい場合は、Ctrl+Dを押すか以下を入力
# exit
すると先頭が$になります。whoami入力で作成したユーザー名が表示されます。
パスワードでログイン不可にする(認証鍵をつかったログイン)
これは運営体制によりますが、パスワードをいちいち入力するのがめんどくさいとか、もし、パスワードが割れてしまったら危険だと思う場合はパスワードではなく認証鍵というものをつかってログインする方法があります。
認証鍵ファイルは人間では覚えきれないような長いパスワードが入ったファイルです。
ただ、認証鍵ファイルをもっていないパソコンからログインできなくなります。それくらい強力な鍵という事ですね。
Terminal.appにて以下を入力し、公開鍵を作成。
$ ssh-keygen
Enter file in which to save the key (/Users/USERNAME.ssh/id_rsa)://空のままEnter
Enter passphrase (empty for no passphrase):
//パスフレーズを入れるとさらに強固になるがログイン毎にパスフレーズが必要になる。今回は空にした。
Enter same passphrase again: //空のままEnter (パスフレーズを入れた場合は再入力)
$ cd ~/.ssh
$ scp id_rsa.pub CentOSユーザー名@IP:id_rsa
SSHログインして、認証鍵を作成する。
$ ssh ユーザー名@IP //SSHでログイン。
password: //入力してエンター
$ cd ~ //ユーザーフォルダに移動
$ ls //現在のディレクトリ内にあるファイルを表示。ここにid_rsaというファイルがある。
$ mkdir -p ~/.ssh //.sshディレクトリ作成
$ chmod 700 ~/.ssh
$ cat id_rsa >> ~/.ssh/authorized_keys2 //authorized_keys2にid_rsaの内容を追加。
$cd ~/.ssh
$ chmod 600 authorized_keys2
//authorized_keys2パーミッションを600(所有ユーザーのみ読み書き可能。)に変更。
これで認証鍵でのログインもできるようになった。
ついでにパスワードのログインを不可にすることで強固なものにする。
$ su -
# nano /etc/ssh/sshd_config
# nano /etc/ssh/sshd_config //SSHサーバー設定ファイル編集
#SyslogFacility AUTH
//以下に変更
SyslogFacility AUTHPRIV
#PermitRootLogin yes
//以下に変更
PermitRootLogin no //rootでのログインを禁止(既になっているはず)
#PasswordAuthentication yes
//以下に変更
PasswordAuthentication no //パスワード式認証 no
#PermitEmptyPasswords no
PermitEmptyPasswords no //パスワードなしログイン no
Terminal.appを再起動して今度は認証鍵でログインする。
$ ssh ユーザー名@IP
おつかれさまです。
次はWEBサーバーを入れていきます。
