OpenSSHの利用法
■基本的な使い方
まずホスト(10.1.0.1とする)でsshdを動かす。
# /etc/init.d/sshd start |
クライアント側で
# ssh 10.1.0.1 |
とするとホストにsshでログインする事ができる。ユーザIDとパスワードを聞かれるが、そのどちらも暗号化して通信される。一連の操作が暗号されているというだけで、telnetと同じである。非常に簡単。
■パスワードを聞かれないログイン
SSHの重要な機能として、ログインする時にパスワードの入力を聞かれないようにする方法がある。なぜこれが重要なのかは後述する。
クライアントでまず暗号キーを作る。
# ssh-keygen –t rsa |
これで/root/.ssh/以下に「id_rsa」「id_rsa.pub」ファイルが作られる。
次に、そのキーファイルをホストにも置く必要があるため、ホストマシン上の対象のユーザのホームディレクトリに“.ssh”ディレクトリを作成し、その中に“scp”(セキュアコピー)コマンドを使い、ファイルをコピーする。
# scp id_rsa.pub 10.1.0.1:~/.ssh/authorized_keys2 |
とすれば、id_rsa.pubファイルが安全にコピーされ、ホストauthorized_keys2というファイル名で置かれる事となる。
なお、~/はホームディレクトリを表す。
後は
# ssh 10.1.0.1 |
とするだけで自動的にログインする事になる。
任意のユーザでログインする場合は
# ssh <ユーザID>@10.1.0.1 |
とすればよい。もちろん、ホームディレクトリに暗号キーが置かれていないユーザは対話式にパスワードが聞かれる事となる。
SSHは双方にて暗号キーを作成している場合、さらに特殊なコマンドを使用する事ができ、
# ssh 10.1.0.1 <コマンド> |
とするとそのコマンドがホスト側で実行され、結果だけをクライアントに返す形になる。
例えば、以下の様にapacheを再起動するコマンドを流す事もできる。
# ssh 10.1.0.1 /etc/init.d/httpd restart httpdを停止中: [ OK ] httpdを起動中: [ OK ] |
これをどこで使用するかというと、シェルスクリプトでホスト側に何かさせたい時に非常に便利なのである。シェルスクリプトは対話式に非常に弱く、別のソフトでコンソールに“passwd:”と出たら設定したコマンドを流すという動作のできるソフトを使用しなければ対話させる事はできない。しかし、このSSHの方法なら対話せずにコマンドを実行させる事ができるため、非常に効率の良いスクリプトが書ける事になる。apacheを監視し、動作がおかしければ再起動させるという動作をさせる事もできるのである。