【完全保存版】CentOS/UbuntuへのSSH公開鍵接続
【Ubuntu版】
1. ユーザーの作成
adduser [ユーザー名]
※rootでログインしている状態です
※ここではweb環境構築という意味でwebにしています
$ adduser web
Adding user `web' ...
Adding new group `web' (1004) ...
Adding new user `web' (1000) with group `web' ...
Creating home directory `/home/web' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: [パスワード入れてね]
Retype new UNIX password: [パスワード入れてね]
passwd: password updated successfully
Changing the user information for web
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
2. sudoでパスワードを求められないようにする(便利なので)
2.1 wheelを有効化する
$ vi /etc/pam.d/su
#
# The PAM configuration file for the Shadow `su' service
#
# This allows root to su without passwords (normal operation)
#auth sufficient pam_rootok.so ←ここをコメントアウトにして以下の1行を追加
auth sufficient pam_rootok.so trust group=wheel
# Uncomment this to force users to be a member of group root
# before they can use `su'. You can also add "group=foo"
# to the end of this line if you want to use a group other
# than the default "root" (but this may have side effect of
# denying "root" user, unless she's a member of "foo" or explicitly
# permitted earlier by e.g. "sufficient pam_rootok.so").
# (Replaces the `SU_WHEEL_ONLY' option from login.defs)
auth required pam_wheel.so ← ここをコメントインする
$ sudo visudo
↓下記の一行を追加する
%wheel ALL=(ALL) NOPASSWD:ALL
2.2 wheel グループ作成とユーザー追加
$ sudo addgroup wheel
Adding group `wheel' (GID 1005) ...
Done.
$ sudo usermod -aG wheel web
3. いよいよSSH環境構築
3.1 まずは自分のPCなどのローカル上で秘密鍵と公開鍵を作成する
$ ssh-keygen -t rsa
3.2 権限変更(すでにssh利用してある場合はやらなくて良い)
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_rsa
3.2 `~/.ssh/id_rsa.pub` の内容をコピーしてサーバーに `authorized_keys` というファイル名で保存する
↓まずは webユーザー にな$る
$ su web
↓ホームディレクトリに移動する
$ cd
↓.sshがない場合は以下を実行
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
↓authorized_keysを作ってローカルで生成したid_rsa.pubの内容をコピーして保存する
$ cd ~/.ssh
$ vi authorized_keys
↓権限変更
$ chmod 600 ~/.ssh/authorized_keys
3.3 公開鍵認証を有効にする
$ sudo vi /etc/ssh/sshd_config
↓以下の3行になるように、コメントイン or 編集をする
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
$ sudo /etc/init.d/ssh restart
[ ok ] Restarting ssh (via systemctl): ssh.service.
4. ローカルからssh接続をする
4.1 ssh接続を簡単にできるようにする
ローカル上の `~/.ssh/config` を編集する
Host [自分にとってわかりやすい名称]
HostName XXX.XXX.XXX.XXX ←ssh接続先のIPなど
User web
Port 22 ←もしSSHのポートを変えている場合は適宜変更してください
IdentityFile ~/.ssh/id_rsa ←さきほど生成した公開鍵の対の秘密鍵の場所
4.2 ssh接続を試みる
ssh [先ほど設定した自分にとってわかりやすい名称]
5. セキュリティを考慮してもうちょい設定を加える
ssh接続は公開鍵認証のみ、rootによるログインを禁止にする$ sudo vi /etc/ssh/sshd_config
$ sudo vi /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
$ sudo /etc/init.d/ssh restart
[ ok ] Restarting ssh (via systemctl): ssh.service.
【CentOS版】
1. ユーザーの作成
$ useradd [ユーザー名]
$ passwd [ユーザー名]
↑このあとにパスワードを設定する
2. sudoでパスワードを求められないようにする(便利なので)
2.1 wheelを有効化する
$ gpasswd -a [ユーザー名] wheel
2.2 wheel グループに属するユーザーが sudo コマンドを利用できるようにする
$ visudo
%wheel ALL=(ALL) ALL // この行の先頭にある # を消す
%wheel ALL=(ALL) NOPASSWD: ALL // この行をいれることでパスワードを求められないようになる
2-3. wheel グループ以外から su コマンドを実行できなくする
3. いよいよSSH環境構築
3.1 まずは自分のPCなどのローカル上で秘密鍵と公開鍵を作成する
$ ssh-keygen -t rsa
3.2 権限変更(すでにssh利用してある場合はやらなくて良い)
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_rsa
3.2 `~/.ssh/id_rsa.pub` の内容をコピーしてサーバーに `authorized_keys` というファイル名で保存する
↓まずは webユーザー にな$る
$ su web
↓ホームディレクトリに移動する
$ cd
↓.sshがない場合は以下を実行
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
↓authorized_keysを作ってローカルで生成したid_rsa.pubの内容をコピーして保存する
$ cd ~/.ssh
$ vi authorized_keys
↓権限変更
$ chmod 600 ~/.ssh/authorized_keys
3.3 公開鍵認証を有効にする
$ sudo vi /etc/ssh/sshd_config
↓以下の3行になるように、コメントイン or 編集をする
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
$ sudo systemctl start sshd.service
4. ローカルからssh接続をする
4.1 ssh接続を簡単にできるようにする
ローカル上の `~/.ssh/config` を編集する
Host [自分にとってわかりやすい名称]
HostName XXX.XXX.XXX.XXX ←ssh接続先のIPなど
User web
Port 22 ←もしSSHのポートを変えている場合は適宜変更してください
IdentityFile ~/.ssh/id_rsa ←さきほど生成した公開鍵の対の秘密鍵の場所
4.2 ssh接続を試みる
ssh [先ほど設定した自分にとってわかりやすい名称]
5. セキュリティを考慮してもうちょい設定を加える
ssh接続は公開鍵認証のみ、rootによるログインを禁止にする$ sudo vi /etc/ssh/sshd_config
$ sudo vi /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
$ sudo /etc/init.d/ssh restart
[ ok ] Restarting ssh (via systemctl): ssh.service.
この記事が気に入ったらサポートをしてみませんか?