クライアントで利用する場合は、以下のパッケージを使用します。
必須。暗号化、復号化、認証等を行うライブラリ類が含まれています。
必須。OpenSSH が使用するディレクトリ、ドキュメント、 および鍵を作成・参照するプログラムとそのマニュアルが含まれています。
必須。rlogin と telnet の代わりになる ssh、 rcp の代わりになる scp、 および ftp の代わりになる sftp と それらのマニュアルを含んでいます。
OpenSSH のパスフレーズを入力させるウィンドウを表示させるのに必要な プログラムと、それらのマニュアル、ドキュメントを含んでいます。 これは必須ではありません。
gtk+ で作られた openssh-askpass を使用するのに必要なプログラムと そのマニュアルが含まれています。これも必須ではありません。
パスワード認証でのログインを許可している SSH サーバが稼働している マシンへのログインは、以下のようにしてできます。
% slogin 接続先ユーザ名@接続先マシン名
もしくは
% ssh -l 接続先ユーザ名 接続先マシン名
接続先ユーザ名 などは、各自の環境に合わせて読みかえて下さい。 接続先ユーザ名@ を省略すると、 接続元のマシンと同一のユーザ名でログインを試みます。
初めて SSH でログインする場合は、以下のようなメッセージが表示されます。
The authenticity of host '接続先マシン' can't be established. RSA key fingerprint is 接続先マシン鍵指紋. Are you sure you want to continue connecting (yes/no)?
ここでは、yes を入力して下さい。 2 回目以降はこのメッセージは表示されません。
接続先ユーザ名@接続先マシン名's password:
このように表示されたら、パスワードを入力します。 認証に成功すれば、接続先のマシンのシェルプロンプトが表示されます。
Permission denied, please try again.
のように表示されたら、ユーザ名かパスワードが間違っているか、 もしくは SSH サーバがパスワード認証によるログインを許可しない設定に なっている可能性があります。
OpenSSH は、 公開鍵と秘密鍵と言われる認証鍵のペアを用いた RSA 認証を使用できます。
OpenSSH は、SSH プロトコル 1 に対応した RSA 認証だけでなく、 SSH プロトコル 2 に対応した RSA 認証、DSA 認証も使用できますが、 これらの使用方法に大きな差はありませんので、 ここでは、SSH プロトコル 1 対応の RSA 認証の使用方法のみとし、 次章で他の認証の異なる点を説明します。
鍵ペアを用いた認証は、パスワードだけによる認証より安全なだけでなく、 後の章に記す通り、パスフレーズの入力を省略できるなどの利点があります。
まずは、接続元のユーザの鍵ペアを生成します。 以下の作業は、接続元のマシン、かつ接続元のユーザで行って下さい。 鍵ペアの生成をするには、以下のコマンドを入力します。
% ssh-keygen
以下のように表示されて、鍵を生成する場所を尋ねられます。 特に変更する必要がなければ、そのまま Enter を押下して下さい。
Generating public/private rsa1 key pair. Enter file in which to save the key (/home/接続元ユーザ名/.ssh/identity):
続いて以下のように表示されて、パスフレーズを尋ねられます。 パスフレーズはユーザのパスワードと異なるものを推奨します。 なお、そのまま Enter を押下すると、パスフレーズは空になりますが、 これはあまり推奨できません。
Enter passphrase (empty for no passphrase):
パスフレーズを入力すると、パスフレーズの確認のために、 以下のように表示されてもう一度入力するよう要求されます。
Enter same passphrase again:
再びパスフレーズを入力すると、 秘密鍵と公開鍵が生成され、鍵指紋が表示されます。 生成されるファイルは以下の通りです。
秘密鍵: ~/.ssh/identity 公開鍵: ~/.ssh/identity.pub
これで鍵ペアの生成は終わりです。
鍵ペアによる認証をするには、公開鍵[1] を 接続先のマシンのログインするユーザのホームディレクトリ配下に登録する必要があります。
接続先のマシンが上記のパスワード認証を許可している場合は、 以下のようにすることで公開鍵を登録できます。
$ ssh-copy-id 接続先ユーザ名@接続先マシン名
以下のようにパスワードを尋ねられますので、パスワードを入力して下さい。
接続先ユーザ名@接続先マシン名's password:
接続先のマシンがパスワード認証を許可していない場合は、 接続先の管理者などに公開鍵を登録してもらう必要があります。 接続先の ~/identity.pub に公開鍵をコピーした場合は、 以下のようにすることで登録できます。
% mkdir ~/.ssh % cat ~/identity.pub >> ~/.ssh/authorized_keys % chmod 755 ~/.ssh % chmod 644 ~/.ssh/authorized_keys % rm ~/identity.pub
SSH プロトコル 2 に対応した RSA 鍵ペア、 もしくは DSA 鍵ペアを作成するには、以下のコマンドを入力します。
% ssh-keygen -t rsa
SSH プロトコル 2 対応 RSA 鍵ペアの場合
または、
% ssh-keygen -t dsa
DSA 鍵ペアの場合
生成される秘密鍵と公開鍵のファイル名は、以下の通りです。
秘密鍵: ~/.ssh/id_rsa
公開鍵: ~/.ssh/id_rsa.pub
秘密鍵: ~/.ssh/id_dsa
公開鍵: ~/.ssh/id_dsa.pub
% ssh-copy-id -l 公開鍵ファイル名 接続先ユーザ名@接続先マシン名
とすることで、SSH プロトコル 2 対応の公開鍵も登録できます。
接続先の管理者などに公開鍵を登録してもらう場合でも、 コピーする場所は、ログインする接続先のユーザのホームディレクトリの ~/.ssh/authorized_keys です。
リモートのマシンとの間でファイルのやり取りをするコマンドとして、 scp が用意されています。 scp は通信を暗号化していますが、 rcp と同じ操作で利用することができます。
また、ftp に対応するコマンドとして sftp も用意されています。 これらの詳細については、それぞれのマニュアルを参照して下さい。
ssh-agent を用いて鍵ペアのパスフレーズを保存することで、 認証の度にパスフレーズを入力する手間を省くことができます。
コンソールや、xterm、rxvt などで ssh-agent を使用するには、 以下のようにコマンドを入力します。
% eval `ssh-agent`
引き続いて、以下のコマンドを入力します。 秘密鍵ファイル名を省略した場合は、 SSH プロトコル 1 の RSA 秘密鍵 ~/.ssh/identity を指定したことになります。
% ssh-add 秘密鍵ファイル名
ここでパスフレーズを入力すれば、パスフレーズが保存され、 パスフレーズの入力なしで鍵認証ができるようになります。 複数の鍵ペアがある場合は、上記コマンドをそれぞれ入力する必要があります。
保存されたパスフレーズは、ログアウトすると消去されるため、 端末エミュレータを開く度に上記二つのコマンドを入力する必要があります。
X を利用している場合は、ssh-askpass を使用することで、 WindwManager にログインしてからログアウトするまでの間、 ずっとパスフレーズを保存しておくことができます。
ssh-askpass を利用する場合は、 ~/.xinit.d/hook というファイルを作成し、 以下のように記述して下さい。
ssh-add 秘密鍵ファイル名
複数の鍵ペアがある場合は、それらの秘密鍵ファイル名を全て記述します。
ssh-add 秘密鍵ファイル名1 ssh-add 秘密鍵ファイル名2 以下同様
既に WindowManger にログインしている場合は、 設定後にログインし直して下さい。 ログインした直後に、以下のような画面が表示されます。
図 1. ssh-askpass
ここで該当する秘密鍵のパスフレーズを入力するだけで、 パスフレーズを保存することができます。
ssh-askpass-gnome を利用する場合は、 環境変数 SSH_ASKPASS に /usr/libexec/ssh/gnome-ssh-askpass を設定して下さい。