Archive for 10月, 2012

git cloneに別の秘密鍵を使う

月曜日, 10月 29th, 2012

通常ログインユーザのid_rsa.pubをGitHubに登録してアクセスします。

GitHubに登録する鍵は共通の物を使いすっきりさせておきたいです。
しかし、一番上の方法だと各ユーザや、各マシンごとに登録が必要になり面倒です。
ログインユーザの鍵を共通にしてもいいのですが、セキュリティ上好ましくありません。

そこで、GitHubで使う鍵だけを共通にして利便性を高めようというお話です。
必要なのは~/.ssh/config
cat ~/.ssh/config
Host github.com
User git
Port 22
Hostname github.com
IdentityFile ~/github/id_rsa
TCPKeepAlive yes
IdentitiesOnly yes

IdentityFileの行を見てもらえば分かりますが、通常の~/.ssh/id_rsaとはパスが違いますね。
他のマシン、アカウントと使う共通の秘密鍵を用意しGitHubへ公開鍵を登録。
秘密鍵を安全な方法で必要なホストの任意にディレクトリに設置。
パーミッションは400にしておきましょう。

あとはログイン時に$SSH_CONFIGが適正に読み込まれるように.bash_profileなどに
exportするよう記述しておきましょう。

echo export SSH_CONFIG= “~/.ssh/config” >> ~/.bash_profile

nkfについて

月曜日, 10月 22nd, 2012

最近初歩的なlinuxコマンドについて書いていますが、実行したコマンドで記事を書いてない
コマンドを残していきたいと思います。

linuxに不慣れな開発者の方やlinux初心者の一助になればと思います。

nkfは文字コードの変換などに使います。
コマンドが入っていなければyum install nkfで入ります。

-j JIS
-e EUC
-W UTF-8
-s Shift-JIS

nkf -W euc.txt
上記のようなコマンドを実行すると標準出力に指定した文字コードで吐き出されます。

わざわざterminalの設定を変えなくても読めるので手間が省けます。
また、mysqlにEUCで保存されているデータを吐き出して読み込む時に重宝します。

例えば
mysql -u hoge -p******* -h localhost -e “select data from test.japanese into outfile “/tmp/euc.txt” | nkf -w /tmp/euc.txt
これでEUCで保存されているデータをUTF8でエンコードされているターミナルで文字化けせずに出力できます。

macのfindについて

水曜日, 10月 17th, 2012

普段linuxで作業をしているのでmac上でfindのオプションを間違えます。

linuxでよく使う例
find /hoge -type f -name “moge*” | xargs -i mv {} /tmp/trash

macで実行する場合
find /hoge -type f -name “moge*” -print0 | xargs -J% mv % /tmp/trash
-J%でパイプ以前のものを置換されます。

追記

-Jに渡す値は%じゃなくても大丈夫。linuxの慣習で{}を使ってます。

xargs -J{} cp {} ./

 

macのfindでは探索パスを指定しないとエラーになってしまいます。

linux上では省略するとカレントディレクトリですが、探索パスの入力を習慣づけるといいですね。

iptables チェイン、ルール番号について

火曜日, 10月 16th, 2012

iptables にコマンドラインからルールを追加する事があります。

通常下記のコマンドでチェインの一番上に設定しています。
iptables -I H-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp -s ***.***.***.*** –dport 80 -j DROP
削除するときは設定したチェインとルールを指定して-Dオプションを実行します。
iptables -D H-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp -s ***.***.***.*** –dport 80 -j DROP

長ったらしい上に設定した詳細を読み解くのがめんどくさい。
そこでルール番号を調べてそこから削除します。

iptables -L -n –line-numbers
Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 DROP tcp — ***.***.***.*** 0.0.0.0/0 state NEW tcp dpt:80

左端のカラムが1になっています。これがルール番号です。
チェインが RH-Firewall-1-INPUTとなっているので、引数にわたします。

iptables -D RH-Firewall-1-INPUT 1

iptables -L -n
消えている事が確認できます。