CentOS7 の公開鍵認証でのSSHログイン

今回ははCentOS7 における、公開鍵認証でのTeraTerm ターミナルエミュレータによるSSH ログインを設定していきます。

まず、wheel グループに加えたユーザーのホームディレクトリで公開鍵を保存する隠しディレクトリ、.ssh を作成します。つづいてroot にスイッチしてパーミッションを一時的に777 に設定します。

$ mkdir .ssh
$ su (switch user してroot のパスワード入力
# chmod 777 .ssh

次に、TeraTerm のメニューバーの[設定]-[SSH鍵生成(N)…] から公開鍵と秘密鍵を[生成(G)] ボタンをクリックするとパスフレーズを求められるので入力、再入力をして生成します。

[公開鍵の保存] と[秘密鍵の保存] ボタンをクリックしてそれぞれ、id_rsa.pub, id_rsa という名前(デフォルト)でホストの適当なフォルダに保存します。

次にエクスプローラで、id_rsa.pub ファイルをホームディレクトリ上のTeraTerm 画面にドラッグ&ドロップすると以下の画面が表示されるので下図のように、SCP:[.ssh] と入力してファイル転送します。

再びターミナルに戻り、転送した公開鍵をauthorized_keys という名前に変更。(WinSCPなど複数の鍵を追加するときは、cat id_rsa.ppk >> authorized_keys など)鍵のパーミッションを600 に、.ssh ディレクトリのパーミションを700 に変更します。

# cd .ssh
# mv id_rsa.pub authorized_keys
# chmod 600 authorized_keys
# chmod 700 .

それから/etc/pam.d/sshd に以下の行を追記、

account    required     pam_nologin.so
account    required     pam_access.so (追記

デフォルトでは、/etc/security/access.conf を参照しますが、

account required  pam_access.so accessfile=/dir/to/ssh_access.conf

で指定したパスの.conf ファイルを指定することもできます。

一方、/etc/security/access.conf に +:wheel:ALL と、+:username:ALL と、– : ALL: ALL を追記。

# Disallow non-local logins to privileged accounts (group wheel). (の付近
#
#-:wheel:ALL EXCEPT LOCAL .win.tue.nl
+:wheel:ALL (追記
+:username:ALL(追記

# All other users should be denied to get access from all sources.
#- : ALL : ALL (その他のすべてのユーザーを拒否
- : ALL : ALL (wheel グループ以外をアクセス制限するには、- : ALL EXCEPT wheel : ALL

最後に/etc/ssh/sshd_config に公開鍵認証の設定をして

#ServerKeyBits 1024
ServerKeyBits 2048 (たぶん、必要

#PubkeyAuthentication no
PubkeyAuthentication yes (公開鍵認証をyes

#PasswordAuthentication yes
PermitEmptyPasswords no
PasswordAuthentication no (パスワード認証をno

sshd 再起動、ログアウトします。

# systemctl restart sshd

TeraTerm の新しいショートカットのプロパティを以下の属性で作ると、1クリックで公開鍵認証でログインできると思います。

"C:\Program Files (x86)\teraterm\ttermpro.exe" localhost:22 /ssh2 /auth=publickey  /user=username /ask4passwd /keyfile="C:\pass/to/id_rsa"

ログインできない場合、原因はいろいろあると思いますがfirewalld でのポート開放(SSHのポート番号の変更をしたとき。)、鍵やディレクトリの所有権、SeLinux のコンテキストの確認、PAM の書式(設定ファイルの行の前後位置)、ローカル、リモートでのアクセス制限、IPの設定はどうなっているなどを確認してみて下さい。

参考URL:http://qiita.com/tjinjin/items/ca6f5518e881bdf5488c