B    セキュア・シェル

セキュア・シェル・ソフトウェアは,従来の安全性の低いネットワーク・コマンドに追加して,または置き換えて使用できる安全性の高い一連のネットワーク・コマンドを提供するクライアント/サーバ型ソフトウェアです。表 B-1 に,従来の安全性の低いネットワーク・コマンドと対応するセキュア・シェル・コマンドを示します。

表 B-1:  従来の安全性の低いネットワーク・コマンドとセキュア・シェル・コマンド

作業 従来の安全性の低いネットワーク・コマンド セキュア・シェル・コマンド
リモート・システム上でのコマンド実行 rsh ssh2
リモート・システムへのログイン rlogin または telnet ssh2
システム間のファイル転送 rcp または ftp scp2 または sftp2

この付録には,次の情報が含まれています。

B.1    セキュア・シェルのサーバとクライアント

セキュア・シェル・サーバとは,セキュア・シェルのサーバ・ソフトウェアがインストールされ,セキュア・シェルの sshd2 デーモンが起動されているシステムのことです。セキュア・シェル・ソフトウェアには,Tru64 UNIX オペレーティング・システム Version 5.1A 以上が稼動するシステム上で動作するセキュア・シェルのサーバ・ソフトウェアが含まれています。付録 B では,セキュア・シェル・サーバのことを以後「サーバ」と呼びます。

セキュア・シェル・クライアントとは,セキュア・シェルのクライアント・ソフトウェアがインストールされているシステムのことです。セキュア・シェル・ソフトウェアには,Tru64 UNIX オペレーティング・システム Version 5.1A 以上が稼動するシステム上で動作するセキュア・シェルのクライアント・ソフトウェアが含まれています。

セキュア・シェルのクライアント・ソフトウェアは,scp2sftp2,および ssh2 の各セキュア・シェル・コマンドと,セキュア・シェルのクライアント・ソフトウェアを管理するその他のセキュア・シェル・コマンドを提供します。付録 B では,セキュア・シェル・クライアントのことを以後「クライアント」と呼びます。

特に指定しない限り,Tru64 UNIX セキュア・シェルのサーバ・ソフトウェアとクライアント・ソフトウェアは Tru64 UNIX Version 5.1B 以上への更新またはインストールを実行し,setld の処理中に次のメッセージが表示されたときにインストールされます。

Configuring "Secure Shell Base Components" (OSFSSHBASEnnn) 
Creating ./etc/ssh2/ssh2_config 
Creating ./etc/ssh2/sshd2_config 
Creating ./etc/ssh2/ssh_dummy_shell.out 
Generating 1024-bit dsa key pair 
 Key generated. 
1024-bit dsa hostkey 
Private key saved to ./etc/ssh2/hostkey 
Public key saved to ./etc/ssh2/hostkey.pub 
Creating /.ssh2/ssh2_config 
 
Installation of the Secure Shell Base Components (OSFSSHBASEnnn) subset is complete. 
 
 

B.2    セキュア・シェルの概要

サーバが起動すると,sshd2 デーモンが (特に指定しない限り) ポート 22でクライアントによるソケット接続の開始を待ち受けます。クライアントが接続すると,sshd2 デーモンが子プロセスを起動します。子プロセスはクライアントと公開ホスト鍵交換を開始します。公開ホスト鍵交換は,クライアントとサーバが公開ホスト鍵を交換して識別情報を相互認証する処理です。公開ホスト鍵は,セキュア・シェル・ソフトウェアのインストール時に /etc/ssh2/hostkey.pub としてサーバ上に作成されます。

クライアントが初めてサーバに接続すると,(特に指定しない限り) ユーザはサーバの公開ホスト鍵のコピーを受け取るように求められます。ユーザがサーバの公開ホスト鍵を受け取ると,クライアント上の該当するユーザの hostkeys ディレクトリに鍵がコピーされます。クライアントはそれ以降のサーバとの接続で,この公開ホスト鍵を使ってサーバを認証します。サーバの公開ホスト鍵をあらかじめクライアント上の該当するユーザの hostkeys ディレクトリに key_port_servername.pub としてコピーすることもできます。たとえば,サーバ名が orange の場合はサーバの鍵を key_22_orange.pub としてコピーします。

クライアントとサーバが互いを認証したら,子プロセスはユーザの認証を実行します。ユーザはサーバ上に有効なユーザ・アカウントとホーム・ディレクトリを持っていなければなりません。子プロセスがユーザの認証に失敗すると,接続は拒否されます。セキュア・シェルでは,次のいずれかのユーザ認証方式が使われます。

子プロセスがユーザの識別情報を認証すると,クライアントとの実際の接続が開始されます。接続には,コマンドの実行,暗号化されたデータ転送,および接続の終了が含まれます。接続が確立すると,クライアントとサーバ間のすべての認証と通信にセキュア・シェル接続が使われます。接続が終了すると,sshd2 デーモンによって起動された子プロセスも終了します。

B.3    セキュア・シェルのサーバとクライアントの構成

サーバとクライアントの通信方法を構成するには,サーバの /etc/ssh2/sshd2_config ファイルとクライアントの /etc/ssh2/ssh2_config ファイルのキーワードの値を設定します。各ユーザがクライアント上に自分の $HOME/.ssh2/ssh2_config ファイルを持つこともできます。$HOME は各ユーザのホームディレクトリの名前を表します。

sshd2_config ファイルと ssh2_config ファイルには,1 行ごとにキーワードと変数のペアが格納されています。各キーワードには省略時の値が設定されており,変更することができます。キーワードは大文字小文字を区別しません。空の行とナンバー記号 (#) で始まる行は,コメントとして無視されます。

B.3.1    サーバの構成

/etc/ssh2/sshd2_config ファイル (または sshd2 -f コマンドで指定したファイル) には,sshd2 デーモンが起動時に読み込む構成のキーワードと値が格納されています。sshd2 デーモンを起動するコマンド行でキーワードと値を指定することで sshd2_config ファイルのキーワードの値の指定変更ができますが,この方法で設定した値は sshd2 デーモンが再起動したときには元の /etc/ssh2/sshd2_config ファイルの値に戻されます。

sshd2 デーモンを実行したまま sshd2_config ファイルを変更した場合は,sshd2 デーモンをリセットして変更内容を反映する必要があります。この方法で変更した内容は,新しいクライアント接続だけに適用されます。sshd2 のリセットの詳細については,B.6.1 項を参照してください。

例 B-1/etc/ssh2/sshd2_config ファイルの例を示します。sshd2_config ファイルの各キーワードの説明については, sshd2_config(4) を参照してください。

例 B-1:  sshd2_config ファイルの例

## sshd2_config
## SSH version Server Configuration File
##
## General
 
	VerboseMode			no
#	QuietMode			yes
	AllowCshrcSourcingWithSubsystems	no
	ForcePTTYAllocation		no
	SyslogFacility			AUTH
#	SyslogFacility			LOCAL7
 
## Network
 
	Port 				22
	ListenAddress			0.0.0.0
	RequireReverseMapping		no
	MaxBroadcastsPerSecond		0
#	MaxBroadcastsPerSecond		1  
#	NoDelay				yes
#	KeepAlive			yes
#	MaxConnections			50
#	MaxConnections			0 
# 0 == number of connections not limited 
 
## Crypto
 
	Ciphers				AnyCipher
#	Ciphers				AnyStd
#	Ciphers				AnyStdCipher
#	Ciphers				3des
	MACs				AnyMAC
#	MACs				AnyStd
#	MACs				AnyStdMAC
#	RekeyIntervalSeconds		3600
 
## User
 
	PrintMotd			yes
	CheckMail			yes
	UserConfigDirectory		"%D/.ssh2"
#	UserConfigDirectory		"/etc/ssh2/auth/%U"
	UserKnownHosts			yes
#	LoginGraceTime			600
#	PermitEmptyPasswords		no
#	StrictModes			yes
 
## User public key authentication
 
	HostKeyFile			hostkey
	PublicHostKeyFile		hostkey.pub
	RandomSeedFile			random_seed
	IdentityFile			identification
	AuthorizationFile		authorization
	AllowAgentForwarding		yes
 
## Tunneling
 
	AllowX11Forwarding		yes
	AllowTcpForwarding		yes
#	AllowTcpForwardingForUsers	sjl, cowboyneal@slashdot.org
#	DenyTcpForwardingForUsers	"2[:isdigit:]*4, peelo"
#	AllowTcpForwardingForGroups	priviliged_tcp_forwarders
#	DenyTcpForwardingForGroups	coming_from_outside
 
## Authentication
## Hostbased and PAM are not enabled by default.
 
#	BannerMessageFile	        /etc/ssh2/ssh_banner_message
#	BannerMessageFile               /etc/issue.net
	PasswordGuesses			1
#	AllowedAuthentications		hostbased,publickey,password
#	AllowedAuthentications		publickey,pam-1@ssh.com
	AllowedAuthentications		hostbased,publickey,password
#	RequiredAuthentications		publickey,password
#	SshPAMClientPath		ssh-pam-client
 
## Host restrictions
 
#	AllowHosts			localhost, foobar.com, friendly.org
#	DenyHosts			evil.org, aol.com
#	AllowSHosts			trusted.host.org
#	DenySHosts			not.quite.trusted.org
#	IgnoreRhosts			no
	IgnoreRhosts			no
#	IgnoreRootRHosts		no
# (the above, if not set, is defaulted to the value of IgnoreRHosts)
 
## User restrictions
 
#	AllowUsers			"sj*,s[:isdigit:]##,s(jl|amza)"
#	DenyUsers			skuuppa,warezdude,31373
#	DenyUsers			don@untrusted.org
#	AllowGroups			staff,users
#	DenyGroups			guest
#	PermitRootLogin			nopwd
	PermitRootLogin			yes
 
## SSH1 compatibility
 
#	Ssh1Compatibility		
#	Sshd1Path			
 
## Chrooted environment
 
#	ChRootUsers			ftp,guest
#	ChRootGroups			guest
 
## subsystem definitions
 
	subsystem-sftp                  sftp-server
 
 

B.3.2    クライアントの構成

/etc/ssh2/ssh2_config ファイルには,クライアント・ソフトウェアが起動時に読み込む構成のキーワードと値が格納されています。各ユーザが自分の $HOME/.ssh2/ssh2_config ファイルを持つこともできます。$HOME は各ユーザのホームディレクトリの名前を表します。最初に /etc/ssh2/ssh2_config ファイルが読み込まれ,次に各ユーザのファイルが読み込まれます。EnforceSecureRutils キーワードを除き,最後に取得したキーワードの値が使われます。EnforceSecureRutils キーワードの詳細については,B.4 節を参照してください。

例 B-2/etc/ssh2/ssh2_config ファイルの例を示します。ssh2_config ファイルの各キーワードの説明については, ssh2_config(4) を参照してください。

例 B-2:  ssh2_config ファイルの例

## ssh2_config
## SSH version Client Configuration File
##
 
## The "*" is used for all hosts, but you can use other hosts as
## well.
*:
 
## Tru64 UNIX specific
# Secure the r* utilities (no, yes)
        EnforceSecureRutils             no
 
## General
 
	VerboseMode			no
#	QuietMode			yes
#	DontReadStdin			no
#	BatchMode			yes
#	Compression			yes
#	ForcePTTYAllocation		yes
#	GoBackground			yes
#	EscapeChar			~
#	PasswordPrompt			"%U@%H's password: "
	PasswordPrompt			"%U's password: "
	AuthenticationSuccessMsg	yes
 
## Network
 
	Port				22
	NoDelay				no
	KeepAlive			yes
#	SocksServer socks://login@socks.ssh.com:1080/11.12.0.0/16,19.74.23.0/24
 
## Crypto
 
	Ciphers				AnyStdCipher 
	MACs				AnyMAC
	StrictHostKeyChecking           ask	
#	RekeyIntervalSeconds		3600
 
## User public key authentication
 
	IdentityFile			identification
	AuthorizationFile		authorization
	RandomSeedFile			random_seed
 
## Tunneling
 
#	GatewayPorts			yes
#	ForwardX11			yes
#	ForwardAgent			yes
 
# Tunnels that are set up upon logging in
 
#	LocalForward			"110:pop3.ssh.com:110"
#	RemoteForward			"3000:foobar:22"
 
## SSH1 Compatibility
 
   Ssh1Compatibility               yes
	Ssh1AgentCompatibility		none
#	Ssh1AgentCompatibility		traditional
#	Ssh1AgentCompatibility		ssh2
#	Ssh1Path			/usr/local/bin/ssh1			
 
## Authentication 
## Hostbased is not enabled by default.
 
#	AllowedAuthentications		hostbased,publickey,password
	AllowedAuthentications		publickey,password
 
# For ssh-signer2 (only effective if set in the global configuration
# file, usually /etc/ssh2/ssh2_config)
 
#	DefaultDomain			foobar.com
#	SshSignerPath			ssh-signer2
 
## Examples of per host configurations
 
#alpha*:
#	Host				alpha.oof.fi
#	User				user
#	PasswordPrompt			"%U:s password at %H: "
#	Ciphers				idea
 
#foobar:
#	Host				foo.bar
#	User				foo_user
 
 
 

B.4    安全性の低いネットワーク・コマンドでセキュア・シェルを使用するための構成

rshrloginrcp の各コマンドや rcmd() 関数を使用するアプリケーションでセキュア・シェル接続が自動的に使われるように構成するには,/etc/ssh2/ssh2_config ファイルまたは各ユーザの $HOME/.ssh2/ssh2_config ファイルの EnforceSecureRutils キーワードを有効にします。特に指定しない限り,EnforceSecureRutils キーワードは無効になっています。/etc/ssh2/ssh2_config ファイルで EnforceSecureRutils キーワードが有効になっている場合は,自分の $HOME/.ssh2/ssh2_config ファイルで設定値を置き換えているユーザについてもすべてこのキーワードが有効になります。/etc/ssh2/ssh2_config ファイルで EnforceSecureRutils キーワードが無効になっている場合は,各ユーザが自分の $HOME/.ssh2/ssh2_config ファイルを使ってこのキーワードを有効にできます。

EnforceSecureRutils キーワードを有効にする場合の注意事項を以下に示します。

B.5    セキュア・シェルによるユーザ認証の構成

クライアントとサーバは,同じ種類のユーザ認証を使用するように構成する必要があります。ユーザ認証については,次のいずれか,またはすべてを使用できます。

クライアントとサーバで使用するユーザ認証の種類を構成するには,サーバの /etc/ssh2/sshd2_config ファイルとクライアントの /etc/ssh2/ssh2_config ファイル (または各ユーザの $HOME/.ssh2/ssh2_config ファイル) に含まれる AllowedAuthentications キーワードに値を指定します。ユーザ認証方式は,AllowedAuthentications キーワードに指定した順序で使われます。たとえば,hostbased を先に指定すると,サーバは hostbased の認証を試行してから次に指定された認証を試行します。このようにして,最初に成功した認証が採用されます。特に指定しない限り,サーバは公開鍵認証,パスワード認証の順に試行します。

B.5.1    パスワード認証の構成

パスワード認証では,Tru64 UNIX のパスワード認証方式によって認証可能な,パスワードで保護されたユーザ・アカウントを各ユーザに用意する必要があります。Tru64 UNIX のパスワード認証方式には,次のようなものがあります。

パスワード認証を使用するには,/etc/ssh2/sshd2_config ファイルおよび /etc/ssh2/ssh2_config ファイルの AllowedAuthentications キーワードの値として,次のように password を設定します (省略時の設定)。

AllowedAuthentications 			password

特に指定しない限り,ユーザによるパスワード入力は 1 回だけ許可されます。パスワード入力の試行回数は,/etc/ssh2/sshd2_config ファイルの PasswordGuesses キーワードの設定値で定義します。

/etc/ssh2/sshd2_config ファイルのキーワードの値を変更した場合は,次のコマンドを入力して sshd2 デーモンをリセットする必要があります。

# /sbin/init.d/sshd reset

パスワード認証を使用すると,stderr にパスワード入力を求めるプロンプトが表示されます。このため,stderr がリダイレクトされていると,パスワードの入力待ちとなり,ログイン・コマンドが応答しなくなったように見えることがあります。

Tru64 UNIX のセキュア・シェル・クライアント上でユーザに対して表示されるパスワード入力プロンプトは,セキュア・シェル接続が使われているかどうかによって異なります。サーバ上で sshd デーモンが実行されている場合,ユーザに対するプロンプトは次のように表示されます。

username's password:
 

サーバ上で sshd デーモンが実行されていない場合,ユーザに対するプロンプトは次のように表示されます。

Password:
 
 

B.5.2    公開鍵認証の構成

公開鍵認証では,ユーザが公開鍵と秘密鍵のペアを持っている必要があります。これらの鍵は,ユーザの認証およびクライアントとサーバ間でやり取りされるデータの暗号化と復号に使われます。公開鍵は公開され,ユーザの通信相手となるサーバに配布されます。秘密鍵はローカル・クライアントに隠蔽され,一切公開・配布されません。一方の公開鍵または秘密鍵で実行した操作は,もう一方の対応する公開鍵または秘密鍵でしか元に戻せません。

公開鍵認証には,クライアントの構成とサーバの構成が必要です。

注意

ユーザの秘密鍵および公開鍵は,サーバの秘密ホスト鍵 (/etc/ssh2/hostkey) および公開ホスト鍵 (/etc/ssh2/hostkey.pub) とは別のものです。サーバの秘密ホスト鍵と公開ホスト鍵はセキュア・シェル・ソフトウェアのインストール時に作成され,サーバを認証するときに使われます。ユーザの秘密鍵と公開鍵は各ユーザが作成し,そのユーザ自身を認証するときに使われます。

B.5.2.1    クライアント上の公開鍵認証の構成

Tru64 UNIX のセキュア・シェル・クライアント上で公開鍵認証を構成するときは,以下の手順に従います。

  1. /etc/ssh2/ssh2_config ファイルの AllowedAuthentications キーワードの値として,次のように publickey を設定する (省略時の設定)。

    AllowedAuthentications 		publickey,password
    

  2. 各ユーザに対して,自分のユーザ・アカウントにログインし,ssh-pubkeymgr コマンドを入力して公開鍵と秘密鍵のペアを作成するように指示します。ユーザに対して次のような内容のプロンプトが表示されます。

    $ ssh-pubkeymgr
    Setting host to hostname
    Checking for publickey authentication to be enabled in the 
    client config..
    Your client configuration is all set.
     
    Checking for publickey authentication to be enabled in the 
    server config..
    Your server configuration is all set.
     
    Checking for existing user public keys..
    Couldn't find your DSA keypair.. I'll generate you a new set..
    Running ssh-keygen2... don't forget to give it a passphrase!
     
    Generating 1024-bit dsa key pair
       2 OOo.oOo.oOo.
    Key generated.
    1024-bit dsa, username@hostname.fqdn, date time -0500
    Passphrase : secret passphrase [1]
    Again      : secret passphrase
    Private key saved to $HOME/.ssh2/id_dsa_1024_a
    Public key saved to $HOME/.ssh2/id_dsa_1024_a.pub
    If you are logging in from this computer, you need to have an
    identification file that defines what private keys will be recognized
    when you login. By default, this should be id_dsa_1024_a.
     
    Creating your identity file..
     
    Creating your authorization file..
     
    Creating your local host public key..
     
    The next section allows you to add hosts that you wish to login 
    from using public key authentication. 
     
    Do you want to add any hosts to your authorization file? 
    (Default: yes) yes [2]
     
    Type in user and hostname, press return after each one.
     
    Add which user? username 
    Add which host? hostname
    You added username at servername 
    as a trusted login.
    Press return to continue or Ctrl-D to exit.
    ^D
    All the new files are in your $HOME/.ssh2 directory.
     
    Now that you have your public keypair generated, you can copy your public
    key up to remote hosts so you can login to them using public key
    authentication. You also need to add this key, 
    username-hostname.pub,
    to the ~/.ssh2/authorization file on the server.
     
    Do you want to upload  username-hostname key to a remote host? (Default: yes) [3]
    Upload to which host? hostname.fqdn
    Which user account? username
    Now running scp2 to connect to hostname.fqdn..
    Most likely you'll have to type a password :)
    Host key not found from database.
    Key fingerprint:
    xolog-bivic-nomeb-behas-zanet-matuc-hedol-moliv-videl-melal-cixox
    You can get a public key's fingerprint by running
    % ssh-keygen -F publickey.pub on the keyfile.
    Are you sure you want to continue connecting (yes/no)? yes
    Host key saved to $HOME/.ssh2/hostkeys/key_22_hostname.fqdn.pub
    host key for hostname.fqdn, accepted by username date time -0 500
    username@hostname.fqdn's password: password [4]
    username-hostname.pub    | 755B | 0.7 kB/s | TOC: 00:00:01 | 100% [5]
     
    Press return to upload to more hosts or Ctrl-D to exit.
    ^D
    

    1. 鍵のペアに割り当てるパスフレーズを入力します。 [例に戻る]

    2. 公開ホスト鍵認証を使用するリモート・ホストからクライアント上の自分のユーザ・アカウントにアクセスする場合は,yes を入力して authorization ファイルにホスト・エントリを追加します。ホスト・エントリによって,ユーザの名前とクライアント上の自分のユーザ・アカウントにアクセスするときに使うリモート・ホストの名前が特定されます。

      yes を入力すると,認証時に使うユーザ名を入力するためのプロンプトが表示され,次にリモート・ホスト名を入力するためのプロンプトが表示されます。ホスト名は,完全修飾ドメイン名 (FQDN) を使って入力してください。たとえば,リモート・ホストの名前が orange で,そのホストの完全修飾ドメイン名が color.art.com であれば,orange.color.art.com と入力します。

      authorization ファイルに追加されるホスト・エントリの形式は,次のとおりです。

      Key username-hostname.pub
      

      [例に戻る]

    3. yes を入力して,クライアント上の自分のアカウントにアクセスするときに使うリモート・ホストのユーザ・アカウントに公開鍵をコピーします。yes を入力すると,公開鍵のコピー先となるリモート・ホストの名前とユーザ・アカウントを入力するためのプロンプトが表示されます。通常は,authorization ファイルに追加したホスト・エントリのユーザ名とリモート・ホスト名を入力します。ホスト名は,完全修飾ドメイン名 (FQDN) を使って入力してください。 [例に戻る]

    4. ユーザの公開鍵がリモート・ホスト上の指定したユーザ・アカウントにコピーされます。ここでは,特に指定しない限りパスワード認証が利用可能な唯一の認証方式なので,ユーザはリモート・ホスト上の指定したユーザ・アカウントのパスワードを入力する必要があります。 [例に戻る]

    5. 公開鍵をリモート・ホストにコピーした結果を示すステータス・メッセージが表示されます。 [例に戻る]

ssh-pubkeymgr コマンドを実行すると,次のものが作成されます。

B.5.2.2    サーバ上の公開鍵認証の構成

サーバ上で公開鍵認証を構成するときは,以下の手順に従います。

  1. /etc/sshd2/ssh2_config ファイルの AllowedAuthentications キーワードの値として,次のように publickey を設定します (省略時の設定)。

    AllowedAuthentications 		publickey,password
    

    AllowedAuthentications キーワードの値を変更した場合は,次のコマンドを入力して sshd2 デーモンをリセットする必要があります。

    # /sbin/init.d/sshd reset

  2. クライアントとサーバが同じシステムでない場合は,サーバ上に $HOME/.ssh2 ディレクトリを作成します。$HOME は公開鍵認証が構成されるユーザのホーム・ディレクトリの名前です。

  3. 必要に応じて,ユーザの $HOME/.ssh2 ディレクトリに authorization ファイルを作成します。authorization ファイルにクライアントのホスト・エントリを追加します。ホスト・エントリによって,ユーザがローカル・ホスト上の自分のユーザ・アカウントにアクセスするときに使うクライアントの公開鍵の名前が特定されます。

    authorization ファイルに追加されるホスト・エントリの形式は,次のとおりです。

    Key username-clienthostname.pub
    

  4. 公開鍵認証の構成時にユーザが自分の公開鍵をクライアントからリモート・サーバにアップロードしなかった場合は,ユーザの公開鍵ファイル ($HOME/username-hostname.pub) をクライアントからサーバ上の該当ユーザの $HOME/.ssh2 ディレクトリにコピーします。

B.5.2.3    リモート・サーバへのアクセス

例 B-3 に,公開鍵認証を使用するリモート・サーバにログインしたときの画面表示例を示します。

例 B-3:  公開鍵認証によるログイン時の画面表示

$ssh server_name
Passphrase for key "/home/user/.ssh2/id_dsa_1024_a
with comment "1024-bit dsa, created by user@Local 
date time +0200":
 
 

B.5.2.4    ユーザ・アクセスの制限

ユーザが公開鍵認証を使用するサーバにログインしたときに,特定の UNIX コマンドしか実行できないように制限することができます。ユーザ・アクセスを制限するには,サーバ上の該当ユーザの authorization ファイルに含まれる Key エントリの下に実行を許可する UNIX コマンドを指定します。たとえば,次のエントリを指定した場合は,公開鍵認証によってユーザが認証され,ログイン・ディレクトリで ls コマンドが実行された後,ユーザはローカル・ホストのプロンプトに戻されます。

Key username-hostname.pub
Command ls

B.5.2.5    パスフレーズの管理

パスフレーズは,各ユーザの Tru64 UNIX ユーザ・アカウントのパスワードではありません。パスフレーズは,ユーザが ssh-pubkeymgr コマンドで公開鍵と秘密鍵のペアを作成するときに入力する秘密のテキストです。クライアントとサーバがユーザについての情報をやり取りするときにパスフレーズが使われます。

ユーザが公開鍵認証を使用するサーバ上でセキュア・シェル・コマンドを入力すると,ユーザに対してパスフレーズの入力が要求されます。同じセッション中にユーザに対してパスフレーズの入力を繰り返し要求しないようにサーバを構成するには,セキュア・シェル・エージェントを実行してユーザの公開鍵をセキュア・シェル・エージェントにロードします。エージェントの実行中は,公開鍵の操作がすべてエージェントに転送されます。セキュア・シェル・エージェントは,ユーザがログアウトするか,またはセキュア・シェル・エージェント自体を停止したときに終了します。

セキュア・シェル・エージェントを実行するときは,以下の手順に従います。

  1. サーバにログインします。

  2. 次のようにして,セキュア・シェル・エージェントを起動します。

    ssh-agent2 $SHELL

    環境変数 $SHELL によって各ユーザのログイン・シェルが特定されます。

    また,各ユーザのログイン・ファイル (.login ファイルなど) に ssh-agent2 $SHELL コマンドを追加すると,ユーザがサーバにログインした時点で自動的にセキュア・シェル・エージェントが起動します。

    セキュア・シェル・エージェントが指定されたシェルを子プロセスとして呼び出し,シェル・プロンプトが表示されます。

  3. 次のようにして,セキュア・シェル・エージェントに秘密鍵をロードします。

    $ ssh-add2

    ssh-add2 コマンドを実行すると,ユーザに対してパスフレーズ入力のプロンプトが表示されます。

B.5.3    ホスト・ベース認証の構成

ホスト・ベース認証は,パスワードやパスフレーズの識別ではなく,システムの識別に基づく認証方式です。ホスト・ベース認証は,クライアントとサーバの両方で Tru64 UNIX オペレーティング・システム・ソフトウェアが稼動している場合のみ使用できます。

ホスト・ベース認証では,次のものが必要です。

ホスト間通信の大部分は双方向であり,ホストはクライアントにもサーバにもなり得るので,ホスト・ベース認証を使って通信するすべてのホストに対して次の手順を実行します。

  1. /etc/ssh2/sshd2_config ファイルに含まれる以下のキーワードに値を設定します。

    /etc/ssh2/sshd2_config ファイルのキーワードの値を変更した場合は,次のコマンドを入力して sshd2 デーモンをリセットします。

    # /sbin/init.d/sshd reset

  2. /etc/ssh2/ssh2_config ファイルまたは各ユーザの $HOME/.ssh2/ssh2_config ファイルに含まれる以下のキーワードに値を設定します。

  3. ホスト・ベース認証の使用時にローカル・ホストの公開ホスト鍵をローカル・ホストの /etc/ssh2/knownhosts ディレクトリから他のホストへコピーできるようにするには,次のように入力します。

    # ln -sf /etc/ssh2/hostkey.pub \
    /etc/ssh2/knownhosts/hostname.fqdn.ssh-dss.pub
    

    hostname にはローカル・ホストの名前,fqdn には /etc/hosts ファイルで定義されているローカル・ホストの完全修飾ドメイン名を指定します。たとえば,ローカル・ホストの名前が orange で,そのホストの完全修飾ドメイン名が color.art.com であれば,orange.color.art.com.ssh-dss.pub と入力します。

    TruCluster Server 環境では,クラスタ別名の公開ホスト鍵を /etc/ssh2/knownhosts ディレクトリに用意する必要があります。クラスタ別名の公開ホスト鍵を用意するには,次のコマンドを入力します。

    # ln -sf /etc/ssh2/hostkey.pub \
    /etc/ssh2/knownhosts/cluster_alias.fqdn.ssh-dss.pub 
    

    cluster_alias にはクラスタ別名の名前,fqdn には /etc/hosts ファイルで定義されているクラスタ別名の完全修飾ドメイン名を指定します。

    TruCluster Server 環境の外にあるホストが TruCluster Server 環境の中にあるホストに接続するには,クラスタの外にあるホスト上の /etc/ssh2/knownhosts ディレクトリにクラスタ別名の公開ホスト鍵ファイル (/etc/ssh2/hostkey.pub) をコピーします。

  4. ホスト・ベース認証を使用する各ユーザのホーム・ディレクトリに,.rhosts または .shosts というファイルを作成し,ローカル・ホストのエントリとローカル・ホストの通信相手となる各リモート・ホストのエントリを追加します。各エントリには,完全修飾ドメイン名付きのホスト名を指定します。たとえば,ローカル・ホストの名前が orange で,そのホストの完全修飾ドメイン名が color.art.com であれば,次のように入力します。

    orange.color.art.com

    ユーザは,自分のホーム・ディレクトリにある .rhosts ファイルまたは .shosts ファイルの所有者になる必要があります。chown コマンドを使ってユーザを .rhosts ファイルまたは .shosts ファイルの所有者に設定し,アクセス許可を 600 (所有者だけに読み取りと書き込みを許可) に設定します。

  5. ローカル・ホストの通信相手となる各リモート・ホストの公開ホスト鍵ファイル (/etc/ssh2/knownhosts/hostname.fqdn.ssh-dss.pub) のコピーをローカル・ホスト上の /etc/ssh2/knownhosts ディレクトリに作成します。

    公開ホスト鍵をコピーするには,ssh-hostbased-setup コマンドを使用します。ssh-hostbased-setup コマンドは,指定されたリモート・ホストまたは指定されたファイルに列挙されているリモート・ホストの公開ホスト鍵を確認し,必要であればローカル・ホスト上の /etc/ssh2/knownhosts ディレクトリに鍵をコピーします。

    ssh-hostbased-setup コマンドを使用するときは,次のように入力します。

    # ssh-hostbased-setup hostname | filename
    

    hostname

    ホスト・ベース認証を構成または確認するリモート・ホストの名前を指定します。

    filename

    ホスト・ベース認証を構成または確認するリモート・ホストの名前を含むファイルを指定します。通常は,.rhosts ファイルまたは .shost ファイルを指定します。

    詳細については, ssh-hostbased-setup(1) を参照してください。

B.6    セキュア・シェル・サーバの管理

この項では,次の各作業の実行方法について説明します。

B.6.1    sshd2 デーモンの起動,停止,再起動,およびリセット

sshd2 デーモンは,(特に指定しない限り) 起動時に /etc/ssh2/sshd2_config ファイルの構成情報を使用します。sshd2 デーモンを起動するときは,コマンド行で構成オプションを指定できます。コマンド行の構成オプションは /etc/ssh2/sshd2_config ファイルの値よりも優先され,sshd2 デーモンが再起動するまでの間有効です。構成情報を永続的に変更する場合は,/etc/ssh2/sshd2_config ファイルを編集します。/etc/ssh2/sshd2_config ファイルの詳細については,B.3.1 項を参照してください。

B.6.2    ユーザ・アクセスのホーム・ディレクトリへの限定

ユーザが ssh2 コマンドまたは sftp2 コマンドを入力したときのユーザ・アクセスをホーム・ディレクトリに限定するには,ssh-chrootmgr コマンドを使用します。

ユーザ・アクセスをホーム・ディレクトリに限定するには,以下の手順に従います。

  1. 次のように,アクセスを制限するユーザまたはグループの名前を指定した ssh-chrootmgr コマンドを入力します。

    # ssh-chrootmgr username username username

  2. /etc/ssh2/sshd2_config ファイルを編集して,手順 1 で指定した制限ユーザ (または制限グループ) を ChRootUsers エントリ (または ChRootGroups エントリ) の値として追加します。

  3. 次のようにして sshd2 デーモンをリセットします。

    # /sbin/init.d/sshd reset

  4. /etc/passwd ファイルを編集して,/bin/ssh-dummy-shell を手順 1 で指定した制限ユーザおよび制限グループ内のユーザのシェルとして構成します。

詳細については, ssh-chrootmgr(1) および ssh-dummy-shell(1) を参照してください。

B.6.3    公開ホスト鍵と秘密ホスト鍵の作成

公開ホスト鍵と秘密ホスト鍵は,セキュア・シェル・ソフトウェアのインストール時に作成されます。新しい公開ホスト鍵と秘密ホスト鍵を作成する必要があるのは,インストール時に作成された鍵を変更する場合だけです。

新しい公開ホスト鍵と秘密ホスト鍵を作成するには,以下の手順に従います。

  1. 次のようにして sshd2 デーモンを停止します。

    # /sbin/init.d/sshd stop

  2. 次のようにしてホスト鍵を作成します。

    # ssh-keygen2 -P /etc/ssh2/hostkey

  3. 次のようにして sshd2 デーモンを起動します。

    # /sbin/init.d/sshd start

注意

サーバの古い公開ホスト鍵のコピーを持っているユーザが新しい公開ホスト鍵を使ってサーバに接続すると,警告メッセージが表示されます。ユーザは,クライアント上の自分の hostkeys ディレクトリからサーバの古い公開ホスト鍵を削除できます。次回クライアントがサーバに接続すると,ユーザはサーバの新しい公開ホスト鍵のコピーを受け入れるように求められます。

B.6.4    セキュア・シェル接続を使った TCP/IP ポートと X11 データのフォワーディング

セキュア・シェル接続を使ってデータを転送するように TCP/IP ポートと X11 接続を構成できます。

B.6.4.1    TCP/IP ポート・フォワーディング

フォワーディング (トンネリング) とは,そのままでは安全性の低い TCP データをセキュア・シェル接続を使って転送する方法です。たとえば,POP3,SMTP,HTTP などの接続でセキュア・シェル接続を使用する構成が可能です。

TCP/IP ポート・フォワーディングを構成するには,以下の手順に従います。

  1. /etc/ssh2/sshd2_config ファイルの AllowTcpForwarding キーワードの値として yes を設定する (省略時の設定)。

    AllowTcpForwarding キーワードの値を変更した場合は,次のコマンドを入力して sshd2 デーモンをリセットする必要があります。

    # /sbin/init.d/sshd reset

  2. TCP/IP ポートのフォワーディングを構成します。TCP/IP ポート・フォワーディングには,次の 2 種類があります。

B.6.4.2    X11 フォワーディング

X11 フォワーディングを有効にするには,以下の手順に従います。

  1. /etc/ssh2/sshd2_config ファイルの ForwardX11 キーワードの値として yes を設定する (省略時の設定)。

    ForwardX11 キーワードの値を変更した場合は,次のコマンドを入力して sshd2 デーモンをリセットする必要があります。

    # /sbin/init.d/sshd reset

  2. 接続をテストするため,クライアントに接続して X11 コマンドを入力します。たとえば,次のように入力して X クロックのプログラムを起動します。

    xclock &

    X クロックのウィンドウが表示されれば,X11 フォワーディングが正常に動作しています。

    注意

    クライアントの DISPLAY 変数を設定しないでください。この変数を設定すると,暗号化が無効になります。セキュア・シェルによって転送される X 接続には,特別なローカル・ディスプレイ設定が使われます。

B.7    セキュア・シェル・コマンドの使用

この項では,セキュア・シェル・コマンドを使った次の作業の実行方法について説明します。

注意

クライアントが初めてサーバに接続すると,ユーザはサーバの公開ホスト鍵のコピーを受け入れるように求められます。ユーザが鍵を受け入れると,サーバの公開ホスト鍵のコピーがクライアント上の該当するユーザの hostkeys ディレクトリにコピーされます。クライアントはそれ以降のサーバとの接続で,この公開ホスト鍵を使ってサーバを認証します。

B.7.1    クライアントとサーバ間のファイル・コピー

次のセキュア・シェル・コマンドを使ってファイルをコピーできます。

B.7.1.1    scp2 コマンドの使用

サーバとの間でファイルをコピーするには,クライアント上で scp2 コマンドまたは scp コマンドを使用します。インストール処理中に,scp コマンド実行可能ファイルから scp2 コマンド実行可能ファイルへのシンボリック・リンクが作成されます。scp2 コマンドは,通常のユーザ権限で実行されます。

相対パスも使用できます。その場合は,ユーザのホーム・ディレクトリからの相対パスとして解釈されます。

scp コマンドの詳細については, scp2(1) を参照してください。

B.7.1.2    sftp2 コマンドの使用

サーバとの間でファイルをコピーするには,クライアント上で sftp2 コマンドまたは sftp コマンドを使用します。インストール処理中に,sftp コマンド実行可能ファイルから sftp2 コマンド実行可能ファイルへのシンボリック・リンクが作成されます。

sftp2 コマンドは ftp コマンドと同様の機能を持っていますが,ftp デーモンや ftp クライアントを接続に使用しません。sftp2 コマンドは,通常のユーザ権限で実行されます。

sftp2 コマンドを使ってリモート・ホストに接続し,ファイルをコピーするには,次のように入力します。

sftp2 [options] hostname

sftp2 コマンドに scp2 の構文を使用することもできます。詳細については,B.7.1.1 項scp2(1)sftp2(1) を参照してください。

B.7.2    サーバへのログインとサーバ上でのコマンド実行

サーバにログインしてサーバ上でコマンドを安全に実行するには,クライアント上で ssh2 コマンドまたは ssh コマンドを使用します。インストール処理中に,ssh コマンド実行可能ファイルから ssh2 コマンド実行可能ファイルへのシンボリック・リンクが作成されます。

サーバ上でコマンドを実行するには,次のように入力します。

ssh2 [options] server_name [command]

ユーザがサーバへのログインに成功すると,sshd2 デーモンが次の処理を実行します。

  1. そのユーザの権限で動作します。

  2. 基本的な環境をセットアップします。

  3. ユーザのホーム・ディレクトリに移動します。

  4. ユーザのシェルを実行します。

ssh2 コマンドの詳細については, ssh2(1) を参照してください。