emacsでUTF-8のファイルを編集する設定

昔とは違い昨今ではLinuxの多言語対応も申し分のない状況だと思います。ssh経由でUTF-8の日本語文字列を入力したときに、特に何も設定しなくてもシェルで日本語のファイル名を扱ったり、viで日本語を編集したりすることが可能です。ただ、emacsはデフォルトのままではUTF-8が文字化けしてしまうようです。設定ファイル.emacsに以下の設定を追加するとUTF-8の日本語がうまく扱えるようになります。

screenの設定

sshでログインしていろいろ作業をするときにscreenは大変便利です。ひとつの端末の中で複数の端末を切り替えて利用可能です。CLIのマルチウインドウです。詳しくは検索するといろいろ説明があると思います。screenだと一般名詞すぎて検索に引っかからない場合はGNU screenと検索してください。

設定はホームディレクトリの.screenrcに記述します。基本的には初期設定のままでも全然便利に利用できますが、screenの制御コマンドの入力に試用するエスケープキーの設定だけは変更したほうが便利だと思います。デフォルトはCtrl-aです。Ctrl-aを押してから他のキーを押すことでscreenの操作を行います。例えばウインドウの切り替えはCtrl-a Ctrl-a、ウインドウい一覧はCtrl-a wと入力します。

単にCtrl-aを入力したいときはCtrl-a aで入力できますが、Ctrl-aはシェルやemacsで行頭にカーソルを移動するときにわりと頻繁に使用するので、これは結構不便です。そこでお勧めのエスケープキー設定はCtrl-zです。Ctrl-zは通常サスペンドに使用しますが、screenを使って複数ウインドウを切り替えて作業するとサスペンドの使用頻度は低いので、ちょうどよい設定だと思います。

設定ファイル.screenrcでは以下のように設定を記述します。

設定ファイルを作成せずに一時的に使用したい場合は、コマンドラインから以下のようにオプションを指定してscreenを起動することも可能です。

あと、TeraTermなどからログインしてscreenを起動したときに、ウインドウのサイズを勝手に変更されてしまう場合があります。自動で変更されるのを防ぐには以下のような設定を行うようです。

まず、自分がログインしたときの環境変数TERMの値を確認します。printenv TERMなどで確認できます。例えばxtermだったとすると以下のようにxtermのときのtermcapinfoを設定ファイル.screenrcに記述します。

これで勝手にウインドウサイズが変更されないはずです。

公開鍵認証でsshを行う設定

sshでサーバにログインして作業することはたびたびあると思いますが、そのたびにパスワードを入力するのは非常に面倒です。またスクリプトなどで他のサーバにアクセスする場合にはそもそもパスワードを入力することができません。

公開鍵認証でsshを利用すると、最初の設定が終われば、以後パスワード入力なしでsshが可能となります。秘密鍵はパスフレーズで暗号化することができますが、ここではパスフレーズは設定しないものとします。

準備は非常に簡単です。まず以下のコマンドで公開鍵を作成します。パスフレーズや作成するファイル名を聞かれますが、ここではすべてデフォルトで改行を入力します。

すると~/.ssh/の下に公開鍵id_rsa.pubと秘密鍵id_rsaが作成されます。このうち公開鍵をid_rsa.pubをサーバに設定すれば設定は完了です。秘密鍵は他の人に見られないように気をつけます。

公開鍵をサーバにコピーした後に、以下のコマンドで認証に使う鍵に追加します。以上で設定は完了です。パスワード入力なしでsshが可能になっていると思います。うまくいかない場合には、.sshディレクトリを手動で作成した場合などは、パーミッションが自分以外から見えるようになっていないかなど確認してください。

公開鍵認証のみでログイン可能にする

サーバに不法侵入されるというようなトラブルは、なんらかの方法でアカウント情報が漏洩してしまったか、もしくは認証が破られてしまった場合に発生するわけですが、現実問題として暗号を解析してパスワードを解析されたり、システムがクラックされて情報が盗まれたりすることはほとんどありません。

それではなぜ侵入されてしまうかというと、パスワードが十分に安全ではないので機械的な辞書攻撃などで破られてしまうのです。それを防ぐためには、そのサーバに存在するすべてのユーザが十分に強度のあるパスワードを設定すればよいわけですが、それを徹底するのは簡単でありません。テスト用に作成したアカウントが消し忘れていた場合などもあります。

sshでパスワードによるログインを禁止し、公開鍵認証のみを使うようにするとその問題が一気に解消されます。すべてのユーザが十分に強度のある公開鍵というものを使ってのみ認証するからです。

sshサーバの設定は/etc/ssh/sshd_configにあります。以下のような設定項目があり、デフォルトではyesになっていますが、これをnoに変更することでパスワードによるログインを禁止できます。設定の変更後はsshdの再起動が必要です。

これは非常に簡単です。上記のようにパスフレーズなしの鍵を使用すれば、sshのログインの際のパスワード入力も不要となり手間も削減できるので、セキュリティ対応で面倒になるわけでもありません。

唯一気をつけなければいけない点は、あらかじめ鍵を登録しないとログインできないことです。上記設定を変更する前には既存のユーザは鍵の設定を完了しておく必要があります。また、新しく作成されたユーザはログインできないので管理者に鍵を登録してもらう必要があります。