クライアントマシンからOpenSSHサーバーへ接続するには、クライアントマシンにopenssh-clientsとopensshパッケージがインストールされている必要があります。
sshコマンドは、rlogin、rsh、telnetコマンドに 代わる安全な手段です。これを使用してリモートマシンへログインし、リモートマシン上でコマンドを実行することができます。
sshコマンドを使ってリモートマシンにログインする方法はtelnetの場合と同様です。 penguin.example.netという名前のリモートマシンへログインするには、シェルプロンプトで次のコマンドを入力します:
ssh penguin.example.net |
初めてsshコマンドでリモートマシンへログインした場合には、次のようなメッセージが表示されます:
The authenticity of host 'penguin.example.net' can't be established. DSA key fingerprint is 94:68:3a:3a:bc:f3:9a:9b:01:5d:b3:07:38:e2:11:0c. Are you sure you want to continue connecting (yes/no)? |
yesとタイプして続行します。 これによって、次のメッセージのように、 ユーザーの既知ホストの一覧にサーバーが追加されます:
Warning: Permanently added 'penguin.example.net' (RSA) to the list of known hosts. |
次に、リモートマシンのパスワードの入力を求めるプロンプトが表示されます。パスワードを入力すると、 リモートマシンのシェルプロンプトが現れます。 ユーザー名を指定しない場合は、ローカルクライアントマシンに ログインしてあるユーザー名がリモートマシンに渡されます。別のユーザー名を指定したい場合は、次の コマンドを使用します:
ssh username@penguin.example.net |
ssh -l username penguin.example.netという 構文も使用できます。
sshコマンドを使用すると、シェルプロンプトへログインせずに、リモートマシン上でコマンドを実行できます。構文は、 ssh hostname commandです。たとえば、リモートマシンpenguin.example.net上でls /usr/share/docというコマンドを実行する場合は、シェルプロンプトで次のコマンドを入力します:
ssh penguin.example.net ls /usr/share/doc |
正しいパスワードを入力すると、リモートディレクトリ/usr/share/docの内容が表示され、その後ローカルのシェルプロンプトへ戻ります。
scpコマンドを使うと、安全な暗号化通信を介してマシン間でファイルを転送できます。これは、rcpコマンドによく似ています。
ローカルファイルをリモートシステムへ転送するための一般的な構文は次の様になります:
scp localfile username@tohostname:/newfilename |
localfileが転送元を指定する部分で、 username@tohostname:/newfilenameが転送先を指定する 部分となります。
shadowmanというローカルファイルをpenguin.example.net上のアカウントへ転送するには、シェルプロンプトで次のように入力します(usernameには自分のユーザー名を指定):
scp shadowman username@penguin.example.net:/home/username |
このコマンドにより、ローカルファイル shadowman は、penguin.example.net 上の /home/username/shadowman へ転送されます。
リモートファイルをローカルシステムへ転送する一般的な構文は次の様になります:
scp username@tohostname:/remotefile /newlocalfile |
remotefileが転送元を指定する部分で、 newlocalfileが転送先を指定する部分になります。
転送元ファイルとして複数のファイルを指定できます。たとえば、/downloadsディレクトリの内容を、 リモートマシンpenguin.example.net上のuploadsという既存ディレクトリへ転送するには、 シェルプロンプトで次のように入力します:
scp /downloads/* username@penguin.example.net:/uploads/ |
sftpユーティリティを使うと、安全な対話型FTPセッションを開くことができます。これは、安全な暗号化接続を使用する点以外は、ftpコマンドによく似ています。一般的な構文は、sftp username@hostname.comです。認証が完了すると、FTPの場合と同様のコマンドセットを使用できます。これらのコマンドの一覧については、sftpのmanページを参照してください。manページを表示するには、シェルプロンプトでman sftpコマンドを実行します。sftpユーティリティは、OpenSSHバージョン2.5.0p1以降にのみ対応しています。
ssh、scp、sftpのいずれかを使用してリモートマシンに接続するたびにパスワードを入力したくない場合は、認証鍵ペアを生成できます。
鍵は、ユーザーごとに生成する必要があります。次の手順に従い、リモートマシンへの接続を要求する ユーザーとしてユーザー鍵を生成します。rootとして以下の手順を完了した場合、鍵を使用できるのはrootだけです。
OpenSSHバージョン3.0始まった、~/.ssh/authorized_keys2、~/.ssh/known_hosts2、/etc/ssh_known_hosts2は古くなっています。SSH Protocol 1と2は、~/.ssh/authorized_keys、~/.ssh/known_hosts、/etc/ssh/ssh_known_hostsファイルを共有しています。
Red Hat Linux 9はディフォルトで SSH Protocol 2 と RSA鍵を使用します。
ヒント | |
---|---|
Red Hat Linuxを再インストールして、ユーザーの生成された鍵ペアを保存したい場合は、 ユーザーのホームディレクトリの.sshディレクトリを バックアップします。 再インストール後にこのディレクトリをホームディレクトリに コピーして戻します。このプロセスはrootも含めて、システム上のすべての ユーザー用に実行できます。 |
次の手順で、SSHプロトコルバージョン2に対応するRSA鍵ペアを生成します。これはOpenSSH 2.9以降でのデフォルトです。
SSHプロトコルバージョン2で動作するRSA鍵ペアを生成するには、シェルプロンプトで次のコマンドを入力します:
ssh-keygen -t rsa |
デフォルトファイルの場所として、~/.ssh/id_rsaを受け入れます。ユーザーアカウントのパスワードとは異なった パスフレーズを入力し、確定のためもう1度入力します。
公開鍵は~/.ssh/id_rsa.pubに書き込まれます。秘密鍵は~/.ssh/id_rsaに書き込まれます。秘密鍵を他人に配布してはいけません。
chmod 755 ~/.sshコマンドを使用して.sshディレクトリのパーミッションを変更します。
~/.ssh/id_rsa.pubの内容を接続したいマシン上の~/.ssh/authorized_keysに コピーします。~/.ssh/authorized_keys ファイルが存在しない場合でも、~/.ssh/id_rsa.pub ファイルをその相手マシン上の~/.ssh/authorized_keysファイルへコピーできます。
GNOMEを稼動している場合は、項15.3.4.4へ進みます。X Window Systemを稼動していない場合は、項15.3.4.5へ進みます。
次の手順で、SSHプロトコルバージョン2に対応するDSA鍵ペアを生成します。
SSHプロトコルバージョン2で動作するDSA鍵を生成するには、シェルプロンプトで次のコマンドを入力します:
ssh-keygen -t dsa |
デフォルトファイルの場所として、~/.ssh/id_dsaを受け入れます。 ユーザーアカウントパスワードとは異なるパスフレーズを入力し、確定のためもう1度入力します。
ヒント | |
---|---|
パスフレーズとは、ユーザー認証に使用される一連の単語と文字です。パスフレーズは、スペースやタブを使用できる点でパスワードとは異なります。通常、パスフレーズでは、1つの単語の代わりに複数のフレーズを使用するため、パスワードより長くなります。 |
公開鍵は、~/.ssh/id_dsa.pubに書き込まれます。秘密鍵は~/.ssh/id_dsaに書き込まれます。秘密鍵をほかの人に渡さないことが重要です。
chmod 755 ~/.sshコマンドを使用して.sshディレクトリのパーミッションを変更します。
~/.ssh/id_dsa.pubの内容を接続したいマシン上の ~/.ssh/authorized_keysに コピーします。~/.ssh/authorized_keysファイルが存在しない場合でも、~/.ssh/id_dsa.pub ファイルをその相手マシン上の~/.ssh/authorized_keysファイルへコピーできます。
GNOMEを稼動している場合は、項15.3.4.4へ進みます。X Window Systemを稼動していない場合は、項15.3.4.5へ進みます。
次の手順で、SSHプロトコルバージョン1が使用するRSA鍵ペアを生成します。 DSAを使用するシステム同士を接続している場合は、RSAバージョン1.3またはRSAバージョン1.5鍵ペアは 必要ありません。
RSA(バージョン1.3と1.5のプロトコルに対応)鍵ペアを生成するには、シェルプロンプトで次のコマンドを入力します:
ssh-keygen -t rsa1 |
デフォルトのファイルの場所(~/.ssh/identity)を受け入れます。アカウントパスワードとは異なるパスフレーズを入力します。確定のため、もう1度入力します。
公開鍵は~/.ssh/identity.pubに書き込まれます。秘密鍵は~/.ssh/identityに書き込まれます。秘密鍵を他人に渡さないでください。
chmod 755 ~/.sshコマンドとchmod 644 ~/.ssh/identity.pubコマンドを使って、.sshディレクトリと鍵のパーミッションを変更します。
~/.ssh/identity.pubの内容を接続したいマシン上の~/.ssh/authorized_keys ファイルへコピーします。~/.ssh/authorized_keysファイルが存在しない場合でも、 ~/.ssh/identity.pubファイルをそのリモートマシン上の ~/.ssh/authorized_keysファイルへ コピー出来ます。
GNOMEを稼動している場合は、項15.3.4.4へ進みます。GNOMEを稼動していない場合は、項15.3.4.5へ進みます。
ssh-agentユーティリティを使用するとパスフレーズを保存できるため、sshやscp接続を開始するたびにパスフレーズを入力する必要はありません。GNOMEを使用している場合は、openssh-askpass-gnomeユーティリティを使用するとユーザーがGNOMEへログインするときにパスフレーズの入力が要求され、GNOMEからログアウトするまでパスフレーズを保存しておくことができます。つまり、GNOMEセッション中は、ssh接続またはscp接続を確立するたびに、パスワードやパスフレーズを入力する必要はありません。GNOMEを使用していない場合は、項15.3.4.5を参照してください。
GNOMEセッションが終了するまでパスフレーズを保存するための手順は次のとおりです:
openssh-askpass-gnomeパッケージがインストールされている必要があります。 rpm -q openssh-askpass-gnomeコマンドを使用して、インストールされているかどうかを判別できます。 インストールされていない場合は、 Red Hat Linux CD-ROMセット、Red Hat FTPミラーサイト、Red Hat ネットワークのいずれかを使用してインストールします。
~/.Xclientsファイルが存在しない場合は、switchdeskを実行して作成することができます。 ~/.Xclientsファイルの中に以下の行があります:
exec $HOME/.Xclients-default |
次のように変更します:
exec /usr/bin/ssh-agent $HOME/.Xclients-default |
(パネル上の)メインメニューボタン => 個人設定 => その他の設定 => セッションの順で選択して自動起動プログラム タブをクリックします。追加をクリックして、自動起動コマンド のテキスト欄に/usr/bin/ssh-addと 入力します。必ず最後に実行されるように、優先順位を既存のコマンドより大きい 数字に設定します。ssh-addには70以上の優先番号が適しています。 優先順位の数字が大きいほど、優先順位は低くなります。他のプログラムが 一覧にある場合は、このプログラムが最も低い優先順となる必要があります。 閉じるボタンをクリックしてプログラムを終了します。
ログアウトして、再びGNOMEにログインします。つまり、Xを再起動します。GNOMEが起動すると、パスフレーズの入力を求めるダイアログボックスが表示されます。要求されたパスフレーズを入力します。DSA鍵ペアとRSA鍵ペアの両方が設定されている場合は、両方の入力が求められます。この後は、ssh、scp、sftpのいずれかを実行したときにパスワードの入力が求められることはないはずです。
ssh-agentコマンドを使用してパスフレーズを保存すると、ssh接続 またはscp接続を確立するたびにパスフレーズを入力する必要がなくなります。 X Window Systemを稼動していない場合は、シェルプロンプトから次の手順を実行します。GNOMEを稼動しているが、 ログイン時にパスフレーズの入力を求めないように設定する場合は(項15.3.4.4を参照)、 以下の手順をxtermなどのターミナルウィンドウで実行します。Xは稼動しているが、GNOMEは稼動していない場合も、 この手順をターミナルウィンドウで実行します。ただし、この場合、パスフレーズの設定は その使用するターミナルウィンドウにだけ保存され、グローバルな設定値とはなりません。