カテゴリー : 2012年 2月

[SSH] 公開鍵の設置時に気を付ける事と、Permission denied (publickey,gssapi-with-mic). が出たときの対処方法

SSH の公開鍵をサーバーに設置した後、いざ鍵認証で接続しようとすると下記のようなエラーを出すことがよくあります。

Permission denied (publickey,gssapi-with-mic).

SSH公開鍵の設置時にやること

・リモート側の .ssh ディレクトリの Permission を 700 に変更する

・公開鍵ファイル(authorized_keys)の Permission を 600 に変更する

# chmod 700 .ssh/
# chmod 600 .ssh/authorized_keys

・リモート側の .ssh ディレクトリのアクセス権限を SSH 接続するユーザに変更する

・公開鍵ファイルのアクセス権限を SSH 接続するユーザに変更する

(例) 権限を ユーザ: codenote、グループ: programmer に変更する

# chown codenote:programmer .ssh/
# chown codenote:programmer .ssh/authorized_keys

以上です。

【参考】

sshで「Permission denied (publickey,gssapi-with-mic).」が出た時 – 今日とは違う明日

[Ruby on Rails 3.1] lib ディレクトリ以下に自作ライブラリを置いて autoload を有効にする設定方法

Ruby on Rails 3.1 にて、lib ディレクトリ以下に自作ライブラリを置いて、オートロードする設定方法を調べたのでメモ。

Rails3 で autoload はデフォルトで無効になっているので、config/application.rb でオートロードを有効にしてやる必要があります。

■ config/application.rb:

# Custom directories with classes and modules you want to be autoloadable.
# config.autoload_paths += %W(#{config.root}/extras)
config.autoload_paths += %W(#{config.root}/lib)  # 追加
config.autoload_paths += Dir["#{config.root}/lib/**/"] # 追加

僕はこの設定で autoload が有効になりましたが、これでもダメな場合は、ここを参考にしてみるといいかも。

自作ライブラリをrequireするためにやったこと – 喉鳴らす未来に達し はてなブックマーク - 自作ライブラリをrequireするためにやったこと - 喉鳴らす未来に達し

以上です。

【参考】

Rails3でautoloadはデフォルトで無効になっている – INOHILOG はてなブックマーク - Rails3でautoloadはデフォルトで無効になっている - INOHILOG

Rails 3 Quicktip: Autoload lib directory including all subdirectories, avoid lazy loading はてなブックマーク - Rails 3 Quicktip: Autoload lib directory including all subdirectories, avoid lazy loading

Rails 3 autoload – Stack Overflow はてなブックマーク - Rails 3 autoload - Stack Overflow

Ruby/Ruby on Rails/libディレクトリとオートロードと自作ライブラリ – TOBY SOFT wiki はてなブックマーク - Ruby/Ruby on Rails/libディレクトリとオートロードと自作ライブラリ - TOBY SOFT wiki

[Ruby] 文字列と配列の変換方法

Rubyで、文字列を配列、配列を文字列に変換する方法をそれぞれ調べたのでメモ。

■ 文字列を配列に変換する方法

文字列を配列に変換するには、splitを使います。

"Ruby on Rails".split(" ")
=> ["Ruby", "on", "Rails"]

■ 配列を文字列に変換する方法

配列を文字列に変換するには、joinを使います。

["Ruby", "on", "Rails"].join(",")
=> "Ruby,on,Rails"

以上です。

【参考】

Ruby/文字列を配列に変換する方法(逆も) – TOBY SOFT wiki はてなブックマーク - Ruby/文字列を配列に変換する方法(逆も) - TOBY SOFT wiki

文字列を分割する – 文字列(String)クラス – Ruby入門 はてなブックマーク - 文字列を分割する - 文字列(String)クラス - Ruby入門

[Ruby] RVM環境での sudo は rvmsudo を使う

RVM 上に構築した Ruby on Rails で WEBrick サーバを 443 Port 指定で起動するために、sudo で実行したところエラーが発生しました。

■ エラー内容

$ sudo rails s -p 443
Password:
/Users/bakorer/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find rails (>= 0) amongst [minitest-1.6.0, rake-0.8.7, rdoc-2.5.8] (Gem::LoadError)
	from /Users/bakorer/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
	from /Users/bakorer/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems.rb:1208:in `gem'
	from /Users/bakorer/.rvm/gems/ruby-1.9.2-p290@mygemset/bin/rails:18:in `<main>'

原因は、Rails の開発環境を RVM で構築していたせいでした。

rvm 環境上で ruby や rails コマンドで sudo が必要な場合は rvmsudo を使わないといけないみたいです。

$ rvmsudo rails s -p 443
Password:
=> Booting WEBrick
=> Rails 3.1.0 application starting in development on http://0.0.0.0:443
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2012-02-23 23:58:43] INFO  WEBrick 1.3.1
[2012-02-23 23:58:43] INFO  ruby 1.9.2 (2011-07-09) [x86_64-darwin11.3.0]
[2012-02-23 23:58:43] INFO  WEBrick::HTTPServer#start: pid=4649 port=443

rvmsudo でやったら上手くいきました。

以上です。

【参考】

ruby – Could not find heroku (>= 0) amongst [] (Gem::LoadError) – Stack Overflow

RVM環境での sudo は rvmsudo だった。。 – The Second Longest Day in My Life…

rvm環境でsudoしたいときはrvmsudoを使う – OR6 blog

[ClamAV] WARNING: Clamd was NOT notified: Can’t connect to clamd through /var/run/clamav/clamd.sock

ClamAV を Cron に登録するためのシェルスクリプトを作成して、確認のため実行したら、ウイルス定義のパターンファイル更新時にエラーが発生しました。

ちなみに、シェルスクリプトの内容は下記のような感じです。

/usr/local/scripts/clamav.sh

#!/bin/bash
 
logfile="/var/log/clamav/clamav_$(date +%Y%m%d%H%M).log"
update_logfile="/var/log/clamav/clamav_update.log"
mail_to="notice@localhost"
mail_from="notice@example.com"
 
/usr/bin/freshclam --quiet -u root -l ${update_logfile} > /dev/null 2>&1
/usr/bin/clamscan -r -i --quiet -l ${logfile} \
--exclude-dir="/sys" \
/ > /dev/null 2>&1
 
if [ $? != 0 ]
then
  cat ${logfile} | mail -s "[ClamAV report] $(hostname)" ${mail_to} -- -f $mail_from
fi

エラー内容

WARNING: Clamd was NOT notified: Can't connect to clamd through /var/run/clamav/clamd.sock

警告が出たので /var/run/clamav/clamd.sock を確認してみるとありませんでした。

それもそのはず、clamd をデーモンで起動させていないので、freshclam がウイルス定義のパターンファイルを更新後、clamd に通知できないのが原因でした。

freshclam.conf ファイルの NotifyClamd の行をコメントアウトしてあげればOKです。

/etc/freshclam.conf

NotifyClamd /etc/clamd.conf
 
↓(コメントアウト)
 
#NotifyClamd /etc/clamd.conf

参考情報

/etc/freshclam.confで
NotifyClamd /etc/clamd.conf
と設定されている場合
freshclam はウイルス定義のパターンファイルを更新した後、clamd にその旨を通知しようとします
しかしclamdが起動していない場合は、通知できず上記のエラーが出るようです

clamdデーモンを起動させない場合は、上記の設定を無効にします
#NotifyClamd /etc/clamd.conf

もし clamdデーモンが起動していてエラーがでる場合は /tmp/clamd.sockが存在するか確認します
clamdが起動していてsockファイルが存在しない場合

/etc/clamd.confで
LocalSocket /tmp/clamd.sock
#TCPSocket 3310
になっているか確認します

・引用元 質問掲示板 – CentOSで自宅サーバー構築

以上です。

[Cacti] 監視対象の追加手順メモ

Cactiにて、監視対象を追加する手順をメモ。

■ 追加手順

1. Console > Devices > Add
  ・Description: 概要名
  ・Hostname:  監視対象のホスト名、もしくは、IPアドレス
  ・Host Template: ucd/net SNMP Host を選択
  その他は、デフォルトのまま。

2. Create Graphs for this Host
  ・全てチェックを入れて、作成

3. Console > Graph Trees > [追加対象のグループ名をクリック] > Tree Items にて Add
  ・Tree Item Type: Host
  を選択して create をクリックする
 

以上です。
 

SNMP を入門するときに参考になった記事まとめ

SNMP(Simple Network Management Protocol) を入門して理解するまでに読んだ記事をまとめました。

ITmediaの『SNMPによるネットワークモニタリング「第2版」』が分かりやすくまとまっていておすすめです。
 

ITmedia エンタープライズ:SNMPによるネットワークモニタリング「第2版」――楽をするためのサーバ監視術、最新版。 はてなブックマーク - ITmedia エンタープライズ:SNMPによるネットワークモニタリング「第2版」――楽をするためのサーバ監視術、最新版。

 ・第1回 サーバ監視にSNMPを使う理由 (1/2) はてなブックマーク - SNMPによるネットワークモニタリング「第2版」:第1回 サーバ監視にSNMPを使う理由 (1/2) - ITmedia エンタープライズ

 ・第2回 現在版サーバ運用の隠れた“モニタリング事情” (1/2) はてなブックマーク - SNMPによるネットワークモニタリング「第2版」:第2回 現在版サーバ運用の隠れた“モニタリング事情” (1/2) - ITmedia エンタープライズ

 ・第3回 SNMPによるモニタリングセキュリティの実態 (1/5) はてなブックマーク - SNMPによるネットワークモニタリング「第2版」:第3回 SNMPによるモニタリングセキュリティの実態 (1/5) - ITmedia エンタープライズ

 ・第4回 SNMPとv3セキュリティ (1/4) はてなブックマーク - SNMPによるネットワークモニタリング「第2版」:第4回 SNMPとv3セキュリティ (1/4) - ITmedia エンタープライズ

 ・第5回 図解で知るSNMP――MIB情報のすべて (1/8) はてなブックマーク - SNMPによるネットワークモニタリング「第2版」:第5回 図解で知るSNMP――MIB情報のすべて (1/8) - ITmedia エンタープライズ

 ・24時間稼働のために――サーバ管理者が知っておくべき自動復帰ノウハウ (1/2) はてなブックマーク - SNMPによるネットワークモニタリング「第2版」:24時間稼働のために――サーバ管理者が知っておくべき自動復帰ノウハウ (1/2) - ITmedia エンタープライズ

 ・第6回 サーバ異常をSNMPで通知させるには (1/6) はてなブックマーク - SNMPによるネットワークモニタリング「第2版」:第6回 サーバ異常をSNMPで通知させるには (1/6) - ITmedia エンタープライズ
 

エンタープライズ: – 第6回:SNMPによるネットワークモニタリング はてなブックマーク - エンタープライズ: - 第6回:SNMPによるネットワークモニタリング
 

net-snmpについて:CodeZine(コードジン) はてなブックマーク - net-snmpについて:CodeZine(コードジン)

 ・net-snmpについて(基礎知識)(1/3):CodeZine はてなブックマーク - net-snmpについて(基礎知識)(1/3):CodeZine

 ・net-snmpについて(環境構築)(1/3):CodeZine はてなブックマーク - net-snmpについて(環境構築)(1/3):CodeZine

とりあえず、以上です。
 

[SSH][Putty] ログイン先のサーバーでSSH公開鍵認証でログインしようとしたら Permission denied (publickey,gssapi-with-mic).

Putty でSSHでログインしたサーバーから更に、SSH公開鍵認証で他のサーバーにログインしようとしたらエラーが発生しました。

■ エラー内容

$ ssh example.com
Permission denied (publickey,gssapi-with-mic).

原因は、Pagent の認証鍵の転送の設定がちゃんとできていなかったためです。

認証鍵の転送

Pageant は ssh-agent と同じく、認証鍵の転送機能を持っています。これを利用すれば、たとえログイン先のサーバーに認証鍵がなくても、ローカルにある認証鍵を使用してログイン先からさらに別のサーバーに SSH 接続を確立できます。サーバーに秘密鍵を保存する必要が無いため、秘密鍵の流出の危険を大幅に削減できます。

Pageant による認証鍵の転送は以下の手順で利用できます。

1. Pageant を起動し、必要な認証鍵を登録する。

2. PuTTY を起動する。

3. 普通に SSH ログインするのですが、その際に [接続]-[SSH]-[認証] の「エージェントフォワーディングを認める」にチェックを入れておきます。もしくは、起動時に “-A” オプションを指定する方法もあります。

4. ログイン先で、さらに “ssh <ユーザー名>@<ホスト名>” などとしてさらに別のホストにログインします。

5. Pageant に必要な認証鍵が登録されていれば、正常にログインできるはずです。

なお、Pageant で認証鍵の転送機能を利用するためには、ログイン先の SSH サーバーが OpenSSH でなければなりません。本家 SSH は OpenSSH とは別のプロトコルを使用しており、そちらは Pageant ではサポートされていません。

・引用元:Pageant でパスフレーズの入力を省く – WebOS Goodies はてなブックマーク - Pageant でパスフレーズの入力を省く - WebOS Goodies

僕の場合は、Pageantへの認証鍵の登録はしていたのですが、「エージェントフォワーディングを認める」にチェックを入れていなかったので、正常に認証鍵の転送ができていなかったみたいです。

SSH公開鍵・秘密鍵ファイルをコピーして使ったら WARNING: UNPROTECTED PRIVATE KEY FILE と警告された

macOS をクリーンインストールして、前から使っていた SSH公開鍵・秘密鍵ファイルを ~/.ssh 以下にコピーして使ったら警告が出ました。

Linux

続きを読む

[Mac] ll コマンドで ls -l コマンドを実行するための設定方法

Redhat Linuxではデフォルトで使えるllコマンドを、Macでは使えないのに実行してしまい -bash: ll: command not found とエラー出すことがよくあります。

bashrc にエイリアスを書けばエラー出して困ることも少なくなると思い、サクっと設定してみました。

■ .bashrc に ll コマンドを ls -l に割り当てる

$ vim ~/.bashrc
 
alias ll='ls -l'

■ sourceコマンドで .bashrc を再読み込み

$ source ~/.bashrc

これで Mac でも ll コマンドが使えるようになりました。