search
LoginSignup
18

More than 5 years have passed since last update.

Organization

パスワードなしで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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
18