LANDISK HACKING DIARY | ||
Since2005/8/17 | ||
TOPへ戻る | ||
INDEX | |||||||||||||||||||||
1. ssh,sloginコマンド 2. マシンAとマシンB間でRSA認証を使ってログインする 3. パスフレーズ入力なしでログインする 4. scpコマンド 5. 参考文献 |
|||||||||||||||||||||
ssh,sloginコマンド | |||||||||||||||||||||
|
筆者の環境では、Fedora Core の入ったデスクトップマシン1台しかLinux はなかったので、あまりLinux間同士のファイルのコピーやら同期などは興味を持たなかったが、LANDISKを導入し、常時電源のついているマシンが2台になったことで、Linux 同士のデータのやりとりも少しは考えてみることにした。まず、ssh コマンドを使って他のLinuxマシンへログインしてみる。以下の例では、LANDISK の root ユーザが172.16.50.2 のroot としてログインすることを意味している。因みにssh コマンドと、slogin のコマンドに違いはないのでどちらを使っても構わない(たぶん)。
ログインするユーザを変更したい場合は、[ -l ユーザ名 ] オプションをつける。
その他のオプションは以下の通り。
|
||||||||||||||||||||
マシンAとマシンB間でRSA認証を使ってログインする | |||||||||||||||||||||
上記で説明したssh でのログインを元にして実際に2台のマシンの間でRSA認証を使ってログインしてみる。ここでいう、マシンAとマシンB とは双方ともLinuxマシンを指す。 マシンA --> ns1.kororo.jp マシンB --> ns2.kororo.jp ユーザ名 --> kororo ① マシンAでの作業内容 パスフレーズを入力し、RSA鍵を作成する。コマンド実行後に、.ssh/ というディレクトリが作成される。
作成された .ssh/id_rsa_pub をマシンBにコピーしておく。 ②マシンBでの作業内容 同様にパスフレーズを入力し、RSA鍵を作成する。ここでのパスフレーズは、マシンAのパスフレーズと同じである必要はない。
作成された .ssh/id_rsa_pub をマシンA にコピーしておく。 ③マシンAでマシンBの情報を追加する マシンAに戻り、先ほどマシンBからコピーされた.ssh/id_rsa_pub を マシンA のauthorized_keys に追加する。お勧めできるかどうかは別問題として、Teraterm などを利用して別々のターミナルを立ち上げて双方のマシンにログインできる環境ならば、id_rsa_pub の 内容をそのまま、相手先マシンの authorized_keys に貼り付ければよいだけなので転送しなくて済むだけ作業効率はいい。
④マシンBでマシンAの情報を追加する マシンBに戻り、先ほどマシンAからコピーされた.ssh/id_rsa_pub を マシンB のauthorized_keys に追加する。
これでマシンAとマシンBで互いにログインできるはずであるが、一筋縄でいかない場合も多いだろう。Fedora Core 側(ここでは、マシンB)はソースから openssh インストールしているため、sshd_config のパラメータがデフォルトでコメントされているものが多いのだが、トラブルを未然に防ぐためにも有効にしたいものは先頭の # をきちんと取り除き設定を有効にするようにしたほうが良さそうだ。そうでないと段々こんがらがってきてどれがデフォルト有効でどれがデフォルト無効のパラメータなのか混乱してくる。確認の意味で、PermitRootLogin を no にした場合、「slogin root@172.16.50.2」などとした場合に「Permission denied (publickey,keyboard-interactive).」の表示がでれば問題ない。root ではなく、ユーザとしてログインしているのに Permission denied のエラーが表示され、相手先マシンに接続できない場合は、自マシンの ~/.ssh/known_hosts を削除してみるといいだろう。 |
|||||||||||||||||||||
パスフレーズ入力なしでログインする | |||||||||||||||||||||
LAN内のLinux管理者は全て自分なのでこれでも問題ないよね?いちいちパスワード入力するのは面倒なのでこの作業はやっぱり飛ばしたいと考えるわけです。この方法には、RSA rhosts 認証を使った場合と、ssh-agent を使った場合で説明していきます。他にもホストベース認証もありますがここでは説明しません。 ■RSA rhosts 認証 パスフレーズの入力をせずともログインできる方法があります。方法は、.ssh 以下に shosts と呼ばれるファイルを作成し、双方のマシンのsshd_config の設定を変えるだけである。マシンAでは、マシンBのホスト名とユーザ名が記述された .shosts をホームディレクトリ直下に置いておく。マシンBでは逆の記述をする。また、作成した .shosts のパーミッションをオーナのみ読み書き可能にしておかないとその .shots は使われないようになっている。 マシンAで実行する場合
マシンBで実行する場合
次に、双方のマシンで、sshd_config を以下のように編集しておく。IgnoreRhosts は個人の環境で.shosts の使用を禁止するという意味で、RhostsRSAAuthentication は、サーバー全体でRSA rhosts 認証を許可するか拒否するかを決定します。
■ssh-agent 次に、ssh-agent を使ってパスフレーズの入力の手間を省いていきます。ssh-agent はパスフレーズをキャッシュとして保存し、認証を代行してやってくれる機能があります。秘密鍵をssh-agent に登録しておけばログアウトするまではずっとパスフレーズの入力をする必要はなくなります。慣例(?)としては以下のようにして登録するようですが、これだとログアウトした後も、プロセスとして残ってしまうため、メモリリソースを消費しかねません。
ssh-agent がプロセスとして残らないようにするために、ssh-agentの子プロセスとしてシェルを起動してあげるとよいらしい(〇〇とssh-agentは使いよう参照)。これなら、ログアウトした後に同時にプロセスも消えるので万万歳となるわけです。ログイン時に登録したい場合は、.bash_profile なりに以下のコマンドを記述しておくといい。だが、ssh-add は手動で行う必要がある。
また、普通に毎回、ssh-agent コマンドとssh-add コマンドを入力しても構いません。これなら一応、ログアウトした後も、プロセスは残りません。
|
|||||||||||||||||||||
scpコマンド | |||||||||||||||||||||
SCPコマンドは相手先マシンにログインすることなくファイルをAからBへと転送[ コピー] することができます。SCP コマンドを使う際も毎回パスワード入力をしなければならない手間は変わりません。上記で説明した、~/.shost なり、ssh-agent なりを使用していればこのパスワード入力の手間は省くことができて楽ちんです。
実際にコマンドを打つと以下のようになる。最初は、お決まりのホスト認証の質問がされるので、yes と答え、転送先のマシンの パスワードを入力する。すでに、ssh-agent が起動していればパスワードの入力は求められずに直接コピーされる。SCPコマンドの注意点として、同名のファイルが存在した場合は上書きされてしまうという点です。
ワイルドカードを使う場合は2重引用符を用いないと異なる解釈をされるようなので注意が必要です。以下の例だと、172.16.50.2 のマシン内にある/home/kororo/ 以下を自分のホームディレクトリにコピーするという意味になる。
|
|||||||||||||||||||||
参考文献 | |||||||||||||||||||||
SSH User setup guide ssh-agent と emacs で scheme 〇〇とssh-agentは使いよう |
TOPへ戻る | ||
Copyright © KORO All Rights Reserved. |