OpenSSHクライアントの設定

クライアントマシンからOpenSSHサーバーへ接続するには、クライアントマシンにopenssh-clientsopensshパッケージがインストールされている必要があります。

sshコマンドの使い方

sshコマンドは、rloginrshtelnetコマンドに代わる安全な手段です。リモートマシンへログインして、コマンドを実行することができます。

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' (DSA) to the list of known hosts.
次に、リモートマシンのパスワードの入力を求めるプロンプトが表示されます。パスワードを入力すると、リモートマシンのシェルプロンプトが現れます。コマンドラインオプションを指定せずにsshコマンドを使用すると、ローカルクライアントマシンへログインしているユーザー名がリモートマシンへ渡されます。別のユーザー名を指定する場合は、次のコマンドを使用します。
ssh -l username penguin.example.net
ssh 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コマンド

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コマンド

sftpユーティリティを使うと、安全な対話型FTPセッションを開くことができます。これは、安全な暗号化接続を使用する点以外は、ftpコマンドによく似ています。一般的な構文は、sftp username@hostname.comです。認証が完了すると、FTPの場合と同様のコマンドセットを使用できます。これらのコマンドの一覧については、sftpのmanページを参照してください。manページを表示するには、シェルプロンプトでman sftpコマンドを実行します。sftpユーティリティは、OpenSSHバージョン2.5.0p1以降にのみ対応しています。

鍵ペアの生成

sshscpsftpのいずれかを使用してリモートマシンに接続するたびにパスワードを入力したくない場合は、認証鍵ペアを生成できます。

鍵は、ユーザーごとに生成する必要があります。次の手順に従い、リモートマシンへの接続を要求するユーザーとして鍵を生成します。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ファイルを共有しています。

バージョン2対応のDSA鍵ペアの生成

次の手順で、SSHプロトコルバージョン2に対応するDSA鍵ペアを生成します。

  1. SSHプロトコルバージョン2で動作するDSA鍵を生成するには、シェルプロンプトで次のコマンドを入力します。

    ssh-keygen -t dsa

    デフォルトファイルの場所として、~/.ssh/id_dsaを受け入れます。アカウントパスワードとは異なるパスフレーズを入力し、確定のためもう1度入力します。[1]

    ティップヒント
     

    パスフレーズは、ユーザー認証に使用される一連の単語と文字です。パスフレーズは、スペースやタブを使用できる点でパスワードとは異なります。通常、パスフレーズでは、1つの単語の代わりに複数のフレーズを使用するため、パスワードより長くなります。

    公開鍵は、~/.ssh/id_dsa.pubに書き込まれます。秘密鍵は~/.ssh/id_dsaに書き込まれます。秘密鍵をほかの人に渡さないことが重要です。

  2. chmod 755 ~/.sshコマンドを使用して.sshディレクトリのパーミッションを変更します。

  3. ~/.ssh/id_dsa.pubの内容を接続先マシンの~/.ssh/authorized_keysにコピーします。~/.ssh/authorized_keysファイルが存在しない場合は、~/.ssh/id_dsa.pubファイルを別のマシン上の~/.ssh/authorized_keysファイルへコピーできます。[1]

  4. GNOMEを稼動している場合は、GNOMEを使ったssh-agentの設定へ進みます。X Window Systemを稼動していない場合は、ssh-agentの設定へ進みます。

バージョン2対応のRSA鍵ペアの生成

次の手順で、SSHプロトコルバージョン2に対応するRSA鍵ペアを生成します。これはOpenSSH 2.9以降でのデフォルトです。

  1. SSHプロトコルバージョン2で動作するRSA鍵ペアを生成するには、シェルプロンプトで次のコマンドを入力します。

    ssh-keygen -t rsa

    ファイルの場所として、デフォルトの~/.ssh/id_rsaを受け入れます。アカウントパスワードとは異なるパスフレーズを入力し、確定のためもう1度入力します。[1]

    公開鍵は~/.ssh/id_rsa.pubに書き込まれます。秘密鍵は~/.ssh/id_rsaに書き込まれます。秘密鍵を他人に配布してはいけません。

  2. chmod 755 ~/.sshコマンドを使用して.sshディレクトリのパーミッションを変更します。

  3. ~/.ssh/id_rsa.pubの内容を接続先マシン上の~/.ssh/authorized_keysへコピーします。~/.ssh/authorized_keysファイルが存在しない場合は、~/.ssh/id_rsa.pubファイルを別のマシン上の~/.ssh/authorized_keysファイルへコピーできます。[1]

  4. GNOMEを稼動している場合は、GNOMEを使ったssh-agentの設定へ進みます。X Window Systemを稼動していない場合は、ssh-agentの設定へ進みます。

バージョン1.3と1.5に対応するRSA鍵ペアの生成

次の手順で、SSHプロトコルバージョン1が使用するRSA鍵ペアを生成します。RSAバージョン1.3またはRSAバージョン1.5鍵ペアが必要ないのは、Red Hat Linux 7.3システム同士を接続している場合だけです。

  1. RSA(バージョン1.3と1.5のプロトコルに対応)鍵ペアを生成するには、シェルプロンプトで次のコマンドを入力します。

    ssh-keygen -t rsa1

    ファイルの場所としてデフォルト(~/.ssh/identity)を受け入れます。アカウントパスワードとは異なるパスフレーズを入力します。確定のため、もう1度入力します。

    公開鍵は~/.ssh/identity.pubに書き込まれます。秘密鍵は~/.ssh/identityに書き込まれます。秘密鍵を他人に渡さないでください。

  2. chmod 755 ~/.sshコマンドとchmod 644 ~/.ssh/identity.pubコマンドを使って、.sshディレクトリと鍵のパーミッションを変更します。

  3. ~/.ssh/identity.pubの内容を接続先マシン上の~/.ssh/authorized_keysファイルへコピーします。~/.ssh/authorized_keysファイルが存在しない場合は、~/.ssh/identity.pubファイルをリモートマシン上の~/.ssh/authorized_keysファイルへコピーできます。 [1]

  4. GNOMEを稼動している場合は、GNOMEを使ったssh-agentの設定へ進みます。GNOMEを稼動していない場合は、ssh-agentの設定へ進みます。

GNOMEを使ったssh-agentの設定

ssh-agentユーティリティを使用するとパスフレーズを保存できるため、sshscp接続を開始するたびにパスフレーズを入力する必要はありません。GNOMEを使用している場合は、openssh-askpass-gnomeユーティリティを使用するとユーザーがGNOMEへログインするときにパスフレーズの入力が要求され、GNOMEからログアウトするまでパスフレーズを保存しておくことができます。つまり、GNOMEセッション中は、ssh接続またはscp接続を確立するたびに、パスワードやパスフレーズを入力する必要はありません。GNOMEを使用していない場合は、ssh-agentの設定を参照してください。

GNOMEセッションが終了するまでパスフレーズを保存するための手順は次のとおりです。

  1. openssh-askpass-gnomeパッケージがインストールされている必要があります。rpm -q openssh-askpass-gnomeコマンドを使用して、インストールされているかどうかを判別できます。インストールされていない場合は、Red Hat CD-ROMセット、Red Hat FTPミラーサイト、Red Hat Networkのいずれかを使用してインストールします。

  2. ~/.Xclientsファイルが存在しない場合は、switchdeskを実行して作成することができます。~/.Xclientsファイル内の次の行を編集します。

    exec $HOME/.Xclients-default

    次のように変更します。

    exec	/usr/bin/ssh-agent $HOME/.Xclients-default
  3. GNOMEコントロールセンターを開き(GNOMEメインメニューボタン-プログラム-デスクトップ設定-GNOMEコントロールセンター)、セッション-スタートアップを選択します。追加ボタンをクリックして、スタートアップコマンドテキストエリアに/usr/bin/ssh-addと入力します。必ず最後に実行されるように、優先順位を既存のコマンドより大きい数字に設定します。ssh-addには、70以上の数字を設定するのが適しています。優先順位の数字が大きいほど、優先順位は低くなります。その他のプログラムも一覧表示すると、これが最も優先順位の低いプログラムとなっているはずです。OKボタンをクリックして、設定値を保存し、GNOMEコントロールセンターを終了します。

  4. ログアウトして、再びGNOMEにログインします。つまり、Xを再起動します。GNOMEが起動すると、パスフレーズの入力を求めるダイアログボックスが表示されます。要求されたパスフレーズを入力します。DSA鍵ペアとRSA鍵ペアの両方が設定されている場合は、両方の入力が求められます。この後は、sshscpsftpのいずれかを実行したときにパスワードの入力が求められることはないはずです。

注意

[1]

~は、現在ログインしているユーザーのホームディレクトリを表す記号です。詳細については、Official Red Hat Linux 入門ガイドを参照してください。