タグ: 認証

公開鍵秘密鍵の生成

sshでログインするときにパスワード入力が面倒。
もしくはscpとかやるときに自動でログインしたい。
というときのために。

ssh がインストールされていなかったらクライアント側サーバ側ともに事前にインストールしておく。

yum install openssh-clients

クライアント側(あやつる側)(192.168.1.10)で

ssh-keygen -t rsa

これで鍵生成。
作るときに

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

とか聞かれる気がする。
passphrase 入れると毎回聞かれて自動でログインって言う目的に合致しないので、
今回入れない。
rootユーザでログインしていれば[ /root/.ssh/ ]配下に id_rsa と id_rsa.pub が出来るはず。
id_rsa.pub が公開鍵なので色々なところに使いまわす。
鍵を作ったクライアントがわかるように

mv id_rsa.pub id_rsa.pub.192.168.1.10

で変更しておく。

そのまま

scp id_rsa.pub.192.168.1.10 root@192.168.1.11:/root/.ssh/id_rsa.pub.192.168.1.10

で id_rsa.pub をサーバ側(あやつられる側)にコピーして。

サーバ側(192.168.1.11)にコピーされたことが確認できたらサーバ側で

cat id_rsa.pub.192.168.1.10 >> authorized_keys

とかやる。
authorized_keys ファイルが存在するかどうかは気にしない。追記だから。
むしろすでにあるならcpとかで下手に上書きしないように気をつける。

で、
authorized_keys が作成された場合はパーミッションが644あたりになっているので、

chmod 600 authorized_keys

でrootさん以外触れないようにしておく。

したらクライアント側(192.168.1.10)から

ssh -i /root/.ssh/id_rsa root@192.168.1.11

みたいにしてサーバ側にログインできるか確認する。
『-i』が秘密鍵を使用するよオプション。-iの後ろでファイル名を指定する。
ログインできたら後はscpなりなんなり。

クライアントはWindowsだ!
というわがままさんの場合はサーバ側で鍵生成、
出来たid_rsa.pubをそのままauthorized_keysにコピー、
id_rsaをWindowsのクライアントに持っていってログインする方法でも構わないです。
要はid_rsaとid_rsa.pubが対になっているということだけ。

イメージとしては

  1. 自分(クライアント)が鉄人(サーバ)のコントローラ(id_rsa)とその受信機(id_rsa.pub)を作る。
  2. 受信機(id_rsa.pub)を鉄人(サーバ)に埋め込む。
  3. コントローラ(id_rsa)を使って「うごけてつじーん!」

ってカンジ。

いまさらのBASIC認証

とりあえず Apache が動いていることは確認しておく。

htpasswd -c /etc/apache2/.htpasswd AuthUser

のようなカンジでAuthUserの .htpasswd ファイルを作成する。
入力すると次のように聞いてくるので、Password を2回タイプする。

New password:
Re-type new password:
Adding password for user AuthUser

2人目以降は「-c」は要らないです。

.htpasswd ファイルが出来上がったら apache の conf ファイルをいじる。
認証をかけたいディレクトリに以下の記述をプラス。

<Directory /var/www/html/>
AuthType Basic
AuthName "Private Area"
AuthUserFile /etc/apache2/.htpasswd
Require user AuthUser
</Directory>

ここまでできたら Apache を再起動。

service apache2 restart

で、いけるはず。

いまさらのDIGEST認証

とりあえず Apache が動いていることは確認しておく。

htdigest -c /media/D/.htdigest 'DigestAuthArea' AuthUser

のようなカンジでAuthUserの .htdigest ファイルを作成する。
「-c」はファイル作成の意味なので2人目以降は要らないです。
このファイルは、外から見れるディレクトリには置かない方が吉。だけど、rootしか見れないようなところに置くと、Apacheも読み込めなくなって起動できなくなるので注意。
「’DigestAuthArea’」は、認証時に出てくるタイトル部分?だと思う。
「AuthUser」は実際に入力するユーザー名なのでなんでも良し。

入力すると次のように聞いてくるので、Password を2回タイプする。

New password:
Re-type new password:

.htdigest ファイルが出来上がったら apache の conf ファイルをいじる。
認証をかけたいディレクトリに以下の記述をプラス。

AuthType Digest
AuthName "DigestAuthArea"
AuthDigestDomain /digest/
AuthUserFile /media/D/.htdigest
Require user AuthUser

「AuthName」は、上の.htdigestファイルを作成した時の認証時に出てくるタイトル部分?と同じものを。
「AuthDigestDomain」は、認証をかけたいディレクトリを指定。
実際には「<Directory /var/www/html/digest>」と書いているので、同じディレクトリ名を指定すればOK?
「AuthUserFile」は、上の.htdigestファイルを作成した場所。
「Require user」も、上の.htdigestファイルで書いたユーザー名。

ここまでできたら Apache を再起動。

service apache2 restart

で、いけるはず。

Invalid command 'AuthDigestFile', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
   ...fail!

みたいに、AuthDigestFile なんてコマンド知らないって言われたら、mods-enabled ディレクトリで auth-digest.load が読み込まれているか確認する。
読み込まれていなかったら、mods-available ディレクトリにある auth-digest.load のリンクを mods-enabled ディレクトリに作成して Apache を起動しなおす。