セキュア・シェル・ソフトウェアは,従来の安全性の低いネットワーク・コマンドに追加して,または置き換えて使用できる安全性の高い一連のネットワーク・コマンドを提供するクライアント/サーバ型ソフトウェアです。表 B-1
に,従来の安全性の低いネットワーク・コマンドと対応するセキュア・シェル・コマンドを示します。
表 B-1: 従来の安全性の低いネットワーク・コマンドとセキュア・シェル・コマンド
作業 | 従来の安全性の低いネットワーク・コマンド | セキュア・シェル・コマンド |
リモート・システム上でのコマンド実行 | rsh |
ssh2 |
リモート・システムへのログイン | rlogin
または
telnet |
ssh2 |
システム間のファイル転送 | rcp
または
ftp |
scp2
または
sftp2 |
この付録には,次の情報が含まれています。
セキュア・シェル・サーバとは,セキュア・シェルのサーバ・ソフトウェアがインストールされ,セキュア・シェルの
sshd2
デーモンが起動されているシステムのことです。セキュア・シェル・ソフトウェアには,Tru64 UNIX オペレーティング・システム Version 5.1A 以上が稼動するシステム上で動作するセキュア・シェルのサーバ・ソフトウェアが含まれています。付録 B
では,セキュア・シェル・サーバのことを以後「サーバ」と呼びます。
セキュア・シェル・クライアントとは,セキュア・シェルのクライアント・ソフトウェアがインストールされているシステムのことです。セキュア・シェル・ソフトウェアには,Tru64 UNIX オペレーティング・システム Version 5.1A 以上が稼動するシステム上で動作するセキュア・シェルのクライアント・ソフトウェアが含まれています。
セキュア・シェルのクライアント・ソフトウェアは,scp2
,sftp2
,および
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.
サーバが起動すると,sshd2
デーモンが (特に指定しない限り) ポート 22でクライアントによるソケット接続の開始を待ち受けます。クライアントが接続すると,sshd2
デーモンが子プロセスを起動します。子プロセスはクライアントと公開ホスト鍵交換を開始します。公開ホスト鍵交換は,クライアントとサーバが公開ホスト鍵を交換して識別情報を相互認証する処理です。公開ホスト鍵は,セキュア・シェル・ソフトウェアのインストール時に
/etc/ssh2/hostkey.pub
としてサーバ上に作成されます。
クライアントが初めてサーバに接続すると,(特に指定しない限り) ユーザはサーバの公開ホスト鍵のコピーを受け取るように求められます。ユーザがサーバの公開ホスト鍵を受け取ると,クライアント上の該当するユーザの
hostkeys
ディレクトリに鍵がコピーされます。クライアントはそれ以降のサーバとの接続で,この公開ホスト鍵を使ってサーバを認証します。サーバの公開ホスト鍵をあらかじめクライアント上の該当するユーザの
hostkeys
ディレクトリに
key_port_servername.pub
としてコピーすることもできます。たとえば,サーバ名が orange の場合はサーバの鍵を
key_22_orange.pub
としてコピーします。
クライアントとサーバが互いを認証したら,子プロセスはユーザの認証を実行します。ユーザはサーバ上に有効なユーザ・アカウントとホーム・ディレクトリを持っていなければなりません。子プロセスがユーザの認証に失敗すると,接続は拒否されます。セキュア・シェルでは,次のいずれかのユーザ認証方式が使われます。
パスワード
公開鍵
ホスト・ベース (ホスト・ベース認証はクライアントとサーバの両方で UNIX オペレーティング・システム・ソフトウェアが稼動している場合のみ使用可能)
子プロセスがユーザの識別情報を認証すると,クライアントとの実際の接続が開始されます。接続には,コマンドの実行,暗号化されたデータ転送,および接続の終了が含まれます。接続が確立すると,クライアントとサーバ間のすべての認証と通信にセキュア・シェル接続が使われます。接続が終了すると,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
/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 安全性の低いネットワーク・コマンドでセキュア・シェルを使用するための構成
rsh
,rlogin
,rcp
の各コマンドや
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
キーワードを有効にする場合の注意事項を以下に示します。
sshd
デーモンは子プロセス
srcmd
を実行および生成します。rshd
と
rlogind
の各デーモンは実行されません。
/etc/ssh2/sshd2_config
ファイルでは,EnforceSecureRutils
キーワードとともに
AllowTcpForwarding
を有効にする必要があります (省略時の設定)。EnforceSecureRutils
キーワードを有効にしたときは,AllowTcpForwarding
キーワードを無効にしないでください。
rsh
コマンド,rcp
コマンド,および
rcmd()
関数を使用するアプリケーションでは,ユーザの認証にホスト・ベース認証のみを使用できます。ホスト・ベース認証の詳細については,B.5.3 項を参照してください。
rlogin
コマンドでは,ユーザの認証にホスト・ベース認証とパスワードによるユーザ認証を使用できます。ホスト・ベース認証の詳細については,B.5.3 項を参照してください。パスワード認証の詳細については,B.5.1 項を参照してください。
クライアントとサーバは,同じ種類のユーザ認証を使用するように構成する必要があります。ユーザ認証については,次のいずれか,またはすべてを使用できます。
クライアントとサーバで使用するユーザ認証の種類を構成するには,サーバの
/etc/ssh2/sshd2_config
ファイルとクライアントの
/etc/ssh2/ssh2_config
ファイル (または各ユーザの
$HOME/.ssh2/ssh2_config
ファイル) に含まれる
AllowedAuthentications
キーワードに値を指定します。ユーザ認証方式は,AllowedAuthentications
キーワードに指定した順序で使われます。たとえば,hostbased
を先に指定すると,サーバは
hostbased
の認証を試行してから次に指定された認証を試行します。このようにして,最初に成功した認証が採用されます。特に指定しない限り,サーバは公開鍵認証,パスワード認証の順に試行します。
B.5.1 パスワード認証の構成
パスワード認証では,Tru64 UNIX のパスワード認証方式によって認証可能な,パスワードで保護されたユーザ・アカウントを各ユーザに用意する必要があります。Tru64 UNIX のパスワード認証方式には,次のようなものがあります。
BSD
エンハンスト・セキュリティ
NIS (Network Information Service)
LDAP (Lightweight Directory Access Protocol)
Kerberos
パスワード認証を使用するには,/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:
公開鍵認証では,ユーザが公開鍵と秘密鍵のペアを持っている必要があります。これらの鍵は,ユーザの認証およびクライアントとサーバ間でやり取りされるデータの暗号化と復号に使われます。公開鍵は公開され,ユーザの通信相手となるサーバに配布されます。秘密鍵はローカル・クライアントに隠蔽され,一切公開・配布されません。一方の公開鍵または秘密鍵で実行した操作は,もう一方の対応する公開鍵または秘密鍵でしか元に戻せません。
公開鍵認証には,クライアントの構成とサーバの構成が必要です。
注意
ユーザの秘密鍵および公開鍵は,サーバの秘密ホスト鍵 (
/etc/ssh2/hostkey
) および公開ホスト鍵 (/etc/ssh2/hostkey.pub
) とは別のものです。サーバの秘密ホスト鍵と公開ホスト鍵はセキュア・シェル・ソフトウェアのインストール時に作成され,サーバを認証するときに使われます。ユーザの秘密鍵と公開鍵は各ユーザが作成し,そのユーザ自身を認証するときに使われます。
Tru64 UNIX のセキュア・シェル・クライアント上で公開鍵認証を構成するときは,以下の手順に従います。
/etc/ssh2/ssh2_config
ファイルの
AllowedAuthentications
キーワードの値として,次のように
publickey
を設定する (省略時の設定)。
AllowedAuthentications
publickey,password
各ユーザに対して,自分のユーザ・アカウントにログインし,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
鍵のペアに割り当てるパスフレーズを入力します。 [例に戻る]
公開ホスト鍵認証を使用するリモート・ホストからクライアント上の自分のユーザ・アカウントにアクセスする場合は,yes
を入力して
authorization
ファイルにホスト・エントリを追加します。ホスト・エントリによって,ユーザの名前とクライアント上の自分のユーザ・アカウントにアクセスするときに使うリモート・ホストの名前が特定されます。
yes
を入力すると,認証時に使うユーザ名を入力するためのプロンプトが表示され,次にリモート・ホスト名を入力するためのプロンプトが表示されます。ホスト名は,完全修飾ドメイン名 (FQDN) を使って入力してください。たとえば,リモート・ホストの名前が
orange
で,そのホストの完全修飾ドメイン名が
color.art.com
であれば,orange.color.art.com
と入力します。
authorization
ファイルに追加されるホスト・エントリの形式は,次のとおりです。
Key username-hostname.pub
yes
を入力して,クライアント上の自分のアカウントにアクセスするときに使うリモート・ホストのユーザ・アカウントに公開鍵をコピーします。yes
を入力すると,公開鍵のコピー先となるリモート・ホストの名前とユーザ・アカウントを入力するためのプロンプトが表示されます。通常は,authorization
ファイルに追加したホスト・エントリのユーザ名とリモート・ホスト名を入力します。ホスト名は,完全修飾ドメイン名 (FQDN) を使って入力してください。
[例に戻る]
ユーザの公開鍵がリモート・ホスト上の指定したユーザ・アカウントにコピーされます。ここでは,特に指定しない限りパスワード認証が利用可能な唯一の認証方式なので,ユーザはリモート・ホスト上の指定したユーザ・アカウントのパスワードを入力する必要があります。 [例に戻る]
公開鍵をリモート・ホストにコピーした結果を示すステータス・メッセージが表示されます。 [例に戻る]
ssh-pubkeymgr
コマンドを実行すると,次のものが作成されます。
クライアント上のユーザが使用する
$HOME/.ssh2
という名前のディレクトリ。$HOME
はユーザのホームディレクトリの名前です。
以下の鍵のペア。
$HOME/.ssh2/id_dsa_1024_a
ファイルには,ユーザの秘密鍵が格納されます。このファイルには,鍵の作成対象となったユーザだけがアクセスできるようにします。
$HOME/.ssh2/id_dsa_1024_a.pub
ファイルと
$HOME/.ssh2/username-hostname.pub
ファイルには,ユーザの公開鍵が格納されます。username-hostname.pub
ファイルは,ユーザが公開鍵認証を使用するサーバに接続する場合,そのサーバにコピーされるファイルです。
$HOME/.ssh2/identification
ファイルには,ユーザの秘密鍵ファイルの名前を特定する次のエントリが格納されます。
IdKey id_dsa_1024_a
$HOME/.ssh2/authorization
ファイルには,ユーザがローカル・ホスト上の自分のユーザ・アカウントにアクセスするときに使うリモート・ホストの公開鍵の名前が格納されます。
サーバ上で公開鍵認証を構成するときは,以下の手順に従います。
/etc/sshd2/ssh2_config
ファイルの
AllowedAuthentications
キーワードの値として,次のように
publickey
を設定します (省略時の設定)。
AllowedAuthentications
publickey,password
AllowedAuthentications
キーワードの値を変更した場合は,次のコマンドを入力して
sshd2
デーモンをリセットする必要があります。
#
/sbin/init.d/sshd reset
クライアントとサーバが同じシステムでない場合は,サーバ上に
$HOME/.ssh2
ディレクトリを作成します。$HOME
は公開鍵認証が構成されるユーザのホーム・ディレクトリの名前です。
必要に応じて,ユーザの
$HOME/.ssh2
ディレクトリに
authorization
ファイルを作成します。authorization
ファイルにクライアントのホスト・エントリを追加します。ホスト・エントリによって,ユーザがローカル・ホスト上の自分のユーザ・アカウントにアクセスするときに使うクライアントの公開鍵の名前が特定されます。
authorization
ファイルに追加されるホスト・エントリの形式は,次のとおりです。
Key username-clienthostname.pub
公開鍵認証の構成時にユーザが自分の公開鍵をクライアントからリモート・サーバにアップロードしなかった場合は,ユーザの公開鍵ファイル ($HOME/username-hostname.pub
) をクライアントからサーバ上の該当ユーザの
$HOME/.ssh2
ディレクトリにコピーします。
例 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":
ユーザが公開鍵認証を使用するサーバにログインしたときに,特定の UNIX コマンドしか実行できないように制限することができます。ユーザ・アクセスを制限するには,サーバ上の該当ユーザの
authorization
ファイルに含まれる
Key
エントリの下に実行を許可する UNIX コマンドを指定します。たとえば,次のエントリを指定した場合は,公開鍵認証によってユーザが認証され,ログイン・ディレクトリで
ls
コマンドが実行された後,ユーザはローカル・ホストのプロンプトに戻されます。
Key username-hostname.pub Command ls
パスフレーズは,各ユーザの Tru64 UNIX ユーザ・アカウントのパスワードではありません。パスフレーズは,ユーザが
ssh-pubkeymgr
コマンドで公開鍵と秘密鍵のペアを作成するときに入力する秘密のテキストです。クライアントとサーバがユーザについての情報をやり取りするときにパスフレーズが使われます。
ユーザが公開鍵認証を使用するサーバ上でセキュア・シェル・コマンドを入力すると,ユーザに対してパスフレーズの入力が要求されます。同じセッション中にユーザに対してパスフレーズの入力を繰り返し要求しないようにサーバを構成するには,セキュア・シェル・エージェントを実行してユーザの公開鍵をセキュア・シェル・エージェントにロードします。エージェントの実行中は,公開鍵の操作がすべてエージェントに転送されます。セキュア・シェル・エージェントは,ユーザがログアウトするか,またはセキュア・シェル・エージェント自体を停止したときに終了します。
セキュア・シェル・エージェントを実行するときは,以下の手順に従います。
サーバにログインします。
次のようにして,セキュア・シェル・エージェントを起動します。
ssh-agent2 $SHELL
環境変数
$SHELL
によって各ユーザのログイン・シェルが特定されます。
また,各ユーザのログイン・ファイル (.login
ファイルなど) に
ssh-agent2 $SHELL
コマンドを追加すると,ユーザがサーバにログインした時点で自動的にセキュア・シェル・エージェントが起動します。
セキュア・シェル・エージェントが指定されたシェルを子プロセスとして呼び出し,シェル・プロンプトが表示されます。
次のようにして,セキュア・シェル・エージェントに秘密鍵をロードします。
$
ssh-add2
ssh-add2
コマンドを実行すると,ユーザに対してパスフレーズ入力のプロンプトが表示されます。
ホスト・ベース認証は,パスワードやパスフレーズの識別ではなく,システムの識別に基づく認証方式です。ホスト・ベース認証は,クライアントとサーバの両方で Tru64 UNIX オペレーティング・システム・ソフトウェアが稼動している場合のみ使用できます。
ホスト・ベース認証では,次のものが必要です。
/etc/hosts
ファイルにローカル・ホストおよび (該当する場合は) ローカルの TruCluster 別名の完全修飾ドメイン名。完全修飾ドメイン名の詳細については,『ネットワーク管理ガイド:接続編』および
hosts
(4)
ユーザのホーム・ディレクトリに
.rhosts
または
.shosts
という名前のファイル。これらのファイルには,ユーザがローカル・ホストにアクセスするときに使う各リモート・ホストのホスト名と完全修飾ドメイン名が格納されます。.shosts
ファイルを読み込むのはセキュア・シェル・サーバだけです。両方のファイルが存在する場合,セキュア・シェル・サーバは最初に
.rhosts
ファイルを読み込み,次に
.shosts
ファイルを読み込みます。どちらかのファイルで特定の接続に対するアクセスが許可されていれば,もう一方のファイルでアクセスが許可されていなくてもセキュア・シェル接続が使われます。
ローカルホストとローカル・ホストの通信相手となるリモート・ホストの公開ホスト鍵ファイル。これらのファイルは,ローカル・ホスト上の
/etc/ssh2/knownhosts
ディレクトリに置く必要があります。
ホスト間通信の大部分は双方向であり,ホストはクライアントにもサーバにもなり得るので,ホスト・ベース認証を使って通信するすべてのホストに対して次の手順を実行します。
/etc/ssh2/sshd2_config
ファイルに含まれる以下のキーワードに値を設定します。
AllowedAuthentications
キーワードの値に
hostbased
(省略時の設定) が含まれていることを確認します。エントリが他にもある場合は,hostbased
を最初のエントリとして設定します。たとえば,次のようにします。
AllowedAuthentications
hostbased,password
IgnoreRhosts
キーワードの値として
no
が設定されていることを確認します。たとえば,次のようにします。
IgnoreRhosts
no
/etc/ssh2/sshd2_config
ファイルのキーワードの値を変更した場合は,次のコマンドを入力して
sshd2
デーモンをリセットします。
#
/sbin/init.d/sshd reset
/etc/ssh2/ssh2_config
ファイルまたは各ユーザの
$HOME/.ssh2/ssh2_config
ファイルに含まれる以下のキーワードに値を設定します。
AllowedAuthentications
キーワードの値に
hostbased
が含まれていることを確認します。エントリが他にもある場合は,hostbased
を最初のエントリとして設定します。たとえば,次のようにします。
AllowedAuthentications
hostbased,password
DefaultDomain
キーワードの値として,ローカル・ホストの完全修飾ドメイン名を設定します。たとえば,ローカル・ホストの完全修飾ドメイン名が
color.art.com
の場合は,次のように入力します。
DefaultDomain color.art.com
ホスト・ベース認証の使用時にローカル・ホストの公開ホスト鍵をローカル・ホストの
/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
) をコピーします。
ホスト・ベース認証を使用する各ユーザのホーム・ディレクトリに,.rhosts
または
.shosts
というファイルを作成し,ローカル・ホストのエントリとローカル・ホストの通信相手となる各リモート・ホストのエントリを追加します。各エントリには,完全修飾ドメイン名付きのホスト名を指定します。たとえば,ローカル・ホストの名前が
orange
で,そのホストの完全修飾ドメイン名が
color.art.com
であれば,次のように入力します。
orange.color.art.com
ユーザは,自分のホーム・ディレクトリにある
.rhosts
ファイルまたは
.shosts
ファイルの所有者になる必要があります。chown
コマンドを使ってユーザを
.rhosts
ファイルまたは
.shosts
ファイルの所有者に設定し,アクセス許可を 600 (所有者だけに読み取りと書き込みを許可) に設定します。
ローカル・ホストの通信相手となる各リモート・ホストの公開ホスト鍵ファイル (/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.1 sshd2 デーモンの起動,停止,再起動,およびリセット
sshd2
デーモンは,(特に指定しない限り) 起動時に
/etc/ssh2/sshd2_config
ファイルの構成情報を使用します。sshd2
デーモンを起動するときは,コマンド行で構成オプションを指定できます。コマンド行の構成オプションは
/etc/ssh2/sshd2_config
ファイルの値よりも優先され,sshd2
デーモンが再起動するまでの間有効です。構成情報を永続的に変更する場合は,/etc/ssh2/sshd2_config
ファイルを編集します。/etc/ssh2/sshd2_config
ファイルの詳細については,B.3.1 項を参照してください。
/etc/ssh2/sshd2_config
ファイルの構成情報を使って
sshd2
デーモンを起動するには,次のように入力します。
#
/sbin/init.d/sshd start
/etc/ssh2/sshd2_config
ファイルのキーワードの値を変更して
sshd2
デーモンを起動するには,次のように入力します。
#
/usr/sbin/sshd
keyword value
sshd2
デーモンを停止するには,次のように入力します。
#
/sbin/init.d/sshd stop
/etc/ssh2/sshd2_config
ファイルの構成情報を使って
sshd2
デーモンを再起動するには,次のように入力します。
#
/sbin/init.d/sshd restart
sshd2
デーモンをリセットするには,次のように入力します。
#
/sbin/init.d/sshd reset
ユーザが
ssh2
コマンドまたは
sftp2
コマンドを入力したときのユーザ・アクセスをホーム・ディレクトリに限定するには,ssh-chrootmgr
コマンドを使用します。
ユーザ・アクセスをホーム・ディレクトリに限定するには,以下の手順に従います。
次のように,アクセスを制限するユーザまたはグループの名前を指定した
ssh-chrootmgr
コマンドを入力します。
#
ssh-chrootmgr
username username username
/etc/ssh2/sshd2_config
ファイルを編集して,手順 1 で指定した制限ユーザ (または制限グループ) を
ChRootUsers
エントリ (または
ChRootGroups
エントリ) の値として追加します。
次のようにして
sshd2
デーモンをリセットします。
#
/sbin/init.d/sshd reset
/etc/passwd
ファイルを編集して,/bin/ssh-dummy-shell
を手順 1 で指定した制限ユーザおよび制限グループ内のユーザのシェルとして構成します。
詳細については,
ssh-chrootmgr
(1)ssh-dummy-shell
(1)B.6.3 公開ホスト鍵と秘密ホスト鍵の作成
公開ホスト鍵と秘密ホスト鍵は,セキュア・シェル・ソフトウェアのインストール時に作成されます。新しい公開ホスト鍵と秘密ホスト鍵を作成する必要があるのは,インストール時に作成された鍵を変更する場合だけです。
新しい公開ホスト鍵と秘密ホスト鍵を作成するには,以下の手順に従います。
次のようにして
sshd2
デーモンを停止します。
#
/sbin/init.d/sshd stop
次のようにしてホスト鍵を作成します。
#
ssh-keygen2
-P
/etc/ssh2/hostkey
次のようにして
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 ポート・フォワーディングを構成するには,以下の手順に従います。
/etc/ssh2/sshd2_config
ファイルの
AllowTcpForwarding
キーワードの値として
yes
を設定する (省略時の設定)。
AllowTcpForwarding
キーワードの値を変更した場合は,次のコマンドを入力して
sshd2
デーモンをリセットする必要があります。
#
/sbin/init.d/sshd reset
TCP/IP ポートのフォワーディングを構成します。TCP/IP ポート・フォワーディングには,次の 2 種類があります。
ローカル TCP/IP ポート・フォワーディング (送信トンネルとも呼ばれる)
ローカル TCP/IP ポート・フォワーディングは,ローカルの TCP/IP ポートに出力されるデータを,指定したリモートの TCP/IP ポートに転送する機能です。ローカル・システム上の指定したポート (local_port) に出力されるすべてのデータをリモート・システム上の指定したポート (remote_port) に転送するには,次のように入力します。
# ssh2 -L local_port:remote:remote_port user@remote
リモート TCP/IP ポート・フォワーディング (受信トンネルとも呼ばれる)
リモート TCP/IP ポート・フォワーディングは,リモートの TCP/IP ポートに出力されるデータを,指定したローカルの TCP/IP ポートに転送する機能です。リモート・システム上の指定したポート (remote_port) に出力されるすべてのデータをローカル・システム上の指定したポート (local_port) に転送するには,次のように入力します。
# ssh2 -R remote_port:local:local_port user@remote
X11 フォワーディングを有効にするには,以下の手順に従います。
/etc/ssh2/sshd2_config
ファイルの
ForwardX11
キーワードの値として
yes
を設定する (省略時の設定)。
ForwardX11
キーワードの値を変更した場合は,次のコマンドを入力して
sshd2
デーモンをリセットする必要があります。
#
/sbin/init.d/sshd reset
接続をテストするため,クライアントに接続して X11 コマンドを入力します。たとえば,次のように入力して X クロックのプログラムを起動します。
xclock &
X クロックのウィンドウが表示されれば,X11 フォワーディングが正常に動作しています。
注意
クライアントの
DISPLAY
変数を設定しないでください。この変数を設定すると,暗号化が無効になります。セキュア・シェルによって転送される X 接続には,特別なローカル・ディスプレイ設定が使われます。
この項では,セキュア・シェル・コマンドを使った次の作業の実行方法について説明します。
注意
クライアントが初めてサーバに接続すると,ユーザはサーバの公開ホスト鍵のコピーを受け入れるように求められます。ユーザが鍵を受け入れると,サーバの公開ホスト鍵のコピーがクライアント上の該当するユーザの
hostkeys
ディレクトリにコピーされます。クライアントはそれ以降のサーバとの接続で,この公開ホスト鍵を使ってサーバを認証します。
次のセキュア・シェル・コマンドを使ってファイルをコピーできます。
scp2
コマンド
sftp2
コマンド
サーバとの間でファイルをコピーするには,クライアント上で
scp2
コマンドまたは
scp
コマンドを使用します。インストール処理中に,scp
コマンド実行可能ファイルから
scp2
コマンド実行可能ファイルへのシンボリック・リンクが作成されます。scp2
コマンドは,通常のユーザ権限で実行されます。
ローカル・システムからリモート・システムにファイルをコピーするには,次のように入力します。
scp2 /directory/file user@system:/directory/file
リモート・システムからリモート・システムにファイルをコピーするには,次のように入力します。
scp2 user@system:/directory/file user@system:/directory/file
相対パスも使用できます。その場合は,ユーザのホーム・ディレクトリからの相対パスとして解釈されます。
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
デーモンが次の処理を実行します。
そのユーザの権限で動作します。
基本的な環境をセットアップします。
ユーザのホーム・ディレクトリに移動します。
ユーザのシェルを実行します。
ssh2
コマンドの詳細については,
ssh2
(1)