パスワードなしでssh接続できるようにする方法

0.序論

WebサーバとDBサーバを別のマシンに切り分ける場合、WebサーバからDBサーバにパスワードなしでアクセスできなければ正常にアクセスできません。
そのための方法を以下に記します。

1.Webサーバ側(ssh接続元)にssh鍵を作成

ls -al ~/.ssh #まず鍵がないことを確認
ssh-keygen -t rsa #鍵作成
  • 1行目で、id_rsaとかid_rsa.pubがあったら、それを使い回せばOK
  • 2行目でパスフレーズの入力を求められるが、何も入力せずEnterキーを押せば良い

2.作った鍵をDBサーバ側(ssh接続先)に置く

Webサーバ(ssh接続元)で作成した公開鍵id_rsa.pubの中身をDBサーバ(ssh接続先)の~/.ssh/authorized_keysに追記する。

3.上記ファイル(フォルダ)権限の設定

ファイルの所有者のみ読み書きできるよう設定する。

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

4.sshを有効にする設定

vim /etc/ssh/sshd_config

/etc/ssh/sshd_configファイルに以下の設定をする。

PubkeyAuthentication=yes
PasswordAuthentication=no
  • rootユーザからのアクセスを許可するか否かで、permitRootLogin=yesとかを記述する。
  • /etc/ssh/sshd_configファイル変更後、sshdの再起動忘れずに!
/etc/init.d/sshd restart
  • ここまでできたら、実際にssh接続してみて、パスワードなしで接続できるか確認してみると良い

5.実際にWebサーバからDBにアクセスできるようにする

5-1.DBの接続先の設定

Webサーバのアプリケーションの設定で、接続するDBサーバのIPアドレスを記述する。(IPアドレスはifconfigコマンドで調べられる)

(例1)
WordPress → wp-config.phpファイルに、

define('DB_HOST', 'localhost');

を記述。

(例2)
MediaWiki → LocalSettings.phpファイルに、

$wgDBserver='localhost';

を記述。

  • いずれの例の場合も、localhostの部分を接続したいDBサーバのIPアドレスにすればOK!
  • ファイルの場所が分からなければfind パス名 -name LocalSettings.phpとかで検索かければ見つかる。

5-2.DB側の権限の設定

  • 権限の確認
select user, host from mysql.user;
  • 特定ユーザの権限の確認
show grants for 'ユーザー名'@'ホスト名';
  • 権限の付与
GRANT 権限 ON レベル TO user;

【参考URL】
▼[MySQL]権限の確認と付与
http://qiita.com/shuntaro_tamura/items/2fb114b8c5d1384648aa

シェアする

  • このエントリーをはてなブックマークに追加

フォローする