クライアントマシンからOpenSSHサーバーへ接続するには、クライアントマシンにopenssh-clientsとopensshパッケージがインストールされていなければなりません。
sshコマンドは、rlogin、rsh、telnetコマンドの安全な代替手段です。リモートマシンへログインして、コマンドを実行することができます。
sshコマンドを使ってリモートマシンへログインすると、telnetした場合と同様になります。penguin.example.netという名前のリモートマシンへログインするには、シェルプロンプトで次のコマンドを入力します。
ssh penguin.example.net |
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)? |
Warning: Permanently added 'penguin.example.net' (DSA) to the list of known hosts. |
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 |
scpコマンドを使うと、安全な暗号化通信を介してマシン間でファイルを転送できます。これは、rcpコマンドによく似ています。
ローカルファイルをリモートマシンへ転送するための一般的な構文は、scp localfile username@tohostname:/newfilename です。localfileには転送元、username@tohostname:/newfilenameのグループには転送先を指定します。
shadowmanというローカルファイルをpenguin.example.net上のアカウントへ転送するには、シェルプロンプトで次のように入力します(usernameには自分のユーザー名を指定)。
scp shadowman username @penguin.example.net:/home/ username |
リモートファイルをローカルシステムへ転送する一般的な構文は、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のいずれかを使用してリモートマシンへログインするたびにパスワードを入力したくない場合は、認証鍵ペアを生成できます。
個別の認証鍵ペア | |
---|---|
SSHプロトコル1(RSA)とSSHプロトコル2(DSA)には、それぞれ個別の認証鍵が必要です。 |
各ユーザーに専用鍵ペアが必要 | |
---|---|
鍵は、ユーザーごとに生成する必要があります。次の手順に従い、リモートマシンへの接続を要求するユーザーとして鍵を生成します。rootとして以下の手順を完了した場合、鍵を使用できるのはrootだけです。 |
次の手順で、DSA鍵ペアを生成します。DSAはSSHプロトコル2によって使用され、Red Hat Linux 7.1のデフォルトです。
プロトコルのバージョン2.0で動作するDSA鍵を生成するには、シェルプロンプトで次のコマンドを入力します。
ssh-keygen -t dsa |
デフォルトファイルの場所として、~/.ssh/id_dsaを受け入れます。アカウントパスワードとは異なるパスフレーズを入力し、確定のため、それをもう1度入力します。[1]
パスフレーズとは? | |
---|---|
パスフレーズは、ユーザ認証に使用される一連の単語と文字です。パスフレーズは、スペースやタブを使用できる点でパスワードとは異なります。通常、パスフレーズでは、1つの単語の代わりに複数のフレーズを使用するため、長さはパスワードより長くなります。 |
chmod 755 ~/.sshコマンドを使用して、.sshディレクトリのパーミッションを変更します。
~/.ssh/id_dsa.pubの内容を接続先マシンの~/.ssh/authorized_keys2へコピーします。~/.ssh/authorized_keys2ファイルが存在しない場合は、~/.ssh/id_dsa.pubファイルを別のマシン上の~/.ssh/authorized_keys2ファイルへコピーできます。[1]
GNOMEを実行している場合は、the section called GNOMEを使ったssh-agentの設定へ進みます。X Window Systemを稼動していない場合は、the section called ssh-agentの設定へ進みます。
次の手順で、SSHプロトコルのバージョン2.0に対応するRSA鍵ペアを生成します。
プロトコルのバージョン2.0で動作するRSA鍵ペアを生成するには、シェルプロンプトで次のコマンドを入力します。
ssh-keygen -t rsa |
ファイルの場所として、デフォルトの~/.ssh/id_rsaを受け入れます。アカウントパスワードとは異なるパスフレーズを入力し、確定のためもう1度それを入力します。[1]
chmod 755 ~/.sshコマンドを使用して.sshディレクトリのパーミッションを変更します。
~/.ssh/id_rsa.pubの内容を接続先マシン上の~/.ssh/authorized_keys2へコピーします。~/.ssh/authorized_keys2ファイルが存在しない場合は、~/.ssh/id_rsa.pubファイルを別のマシン上の~/.ssh/authorized_keys2ファイルへコピーできます。[1]
GNOMEを稼動している場合は、the section called GNOMEを使ったssh-agentの設定へ進みます。X Window Systemを稼動していない場合は、the section called ssh-agentの設定へ進みます。
次の手順で、SSHプロトコルバージョン1が使用するRSA鍵ペアを生成します。RSA鍵ペアが必要ないのは、Red Hat Linux 7.1 システム同士を接続している場合だけです。
RSA(バージョン1.3と1.5のプロトコルに対応)鍵ペアを生成するには、シェルプロンプトで次のコマンドを入力します。
ssh-keygen |
chmod 755 ~/.sshコマンドとchmod 644 ~/.ssh/identity.pubコマンドを使って、.sshディレクトリと鍵のパーミッションを変更します。
~/.ssh/identity.pubの内容を接続先マシン上の~/.ssh/authorized_keysファイルへコピーします。~/.ssh/authorized_keysファイルが存在しない場合は、~/.ssh/identity.pubファイルをリモートマシン上の~/.ssh/authorized_keysファイルへコピーできます。[1]
GNOMEを稼動している場合は、the section called GNOMEを使ったssh-agentの設定へ進みます。GNOMEを稼動していない場合は、the section called ssh-agentの設定へ進みます。
ssh-agentユーティリティを使用してパスフレーズを保存できるため、sshやscp接続を開始するたびにパスフレーズを入力する必要はありません。GNOMEを使用している場合は、openssh-askpass-gnomeユーティリティを使って、ユーザーがGNOMEへログインするときにパスフレーズの入力を要求し、GNOMEからログアウトするまでそれを保存しておくことができます。つまり、GNOMEセッション中は、sshまたはscp接続を確立するたびに、パスワードやパスフレーズを入力する必要はありません。GNOMEを使用していない場合は、the section called ssh-agentの設定を参照してください。
次の手順で、GNOMEセッション中のパスフレーズを保存します。
openssh-askpass-gnomeパッケージがインストールされていなければなりません。rpm -q openssh-askpass-gnomeコマンドを使用して、インストール済みかどうかを判別できます。インストールされていない場合は、Red Hat CD-ROM セット、Red Hat FTPミラーサイト、Red Hat Networkのいずれかを使用してインストールします。
~/.Xclientsファイルがない場合は、switchdeskを実行して作成することができます。~/.Xclientsファイル内の次の行を編集します。
exec $HOME/.Xclients-default |
exec /usr/bin/ssh-agent $HOME/.Xclients-default |
GNOME Control Centerを開き(GNOMEメインメニューボタン=>プログラム=>デスクトップ設定=>GNOME Control Center)、セッション=>Startup Programsを選択します。[Add]ボタンをクリックして、[Startup Command]テキストエリアに/usr/bin/ssh-addと入力します。必ず最後に実行されるように、優先順位を既存のコマンドより大きい数字に設定します。ssh-addには、70以上の数字を設定するのが適しています。優先順位の数字が大きいほど、優先順位は低くなります。その他のプログラムをリストした際に、これがもっとも優先順位の低いプログラムになっているはずです。[OK]ボタンをクリックして、設定値を保存し、GNOME Control Centerを終了します。
ログアウトして、別の単語を使ってGNOMEにログインし、Xを再起動します。GNOMEが起動すると、パスフレーズの入力を求めるダイアログボックスが表示されます。要求されたパスフレーズを入力します。DSA鍵ペアとRSA鍵ペアの両方が設定されている場合は、両方の入力が求められます。今回は、ssh、scp、sftpのいずれかによってパスワードの入力が求められることはないはずです。
ssh-agentコマンドを使用してパスフレーズを保存すると、sshまたはscp接続を確立するたびにパスフレーズを入力する必要がなくなります。X Window Systemを稼動している場合は、シェルプロンプトから次の手順を実行します。GNOMEを稼動しているが、ログイン時にパスフレーズの入力を求めないように設定したい場合は(the section called GNOMEを使ったssh-agentの設定参照)、この手順をxtermなどのターミナルウィンドウで実行します。Xは稼動しているが、GNOMEは稼動していない場合も、この手順をxtermなどのターミナルウィンドウで実行します。ただし、この場合、パスフレーズの設定はターミナルウィンドウにだけ保存され、グローバルな設定値とはなりません。
[1] | ~は、現在ログインしているユーザーのホームディレクトリの略記号です。詳細については、オフィシャル Red Hat Linux 入門ガイド を参照してください。 |