OpenSSHとSSH2の相互接続

OpenSSH Clientでの鍵作成

OpenSSHでは、以下のように"ssh-keygen"を呼び出すだけで、ユー ザー認証用の秘密鍵/公開鍵が作成されます。途中でパスワード入力を求めら れますが、空でも構いません。実行すると、秘密鍵( ~/.ssh/id_rsa )と公開 鍵( ~/.ssh/id_rsa.pub )が作られます。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/someone/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/someone/.ssh/id_rsa.
Your public key has been saved in /home/someone/.ssh/id_rsa.pub.
The key fingerprint is:
11:22:33:44:55:66:77:88:99:00:aa:bb:cc:dd:ee:ff someone@openssh-client.example.com

上記のようにして作った公開鍵( id_rsa.pub )は、OpenSSH Serverで認証に使 うための鍵です。SSH2 Serverで公開鍵認証をするためには、OpenSSHのインス トールされている計算機で鍵をSSH2用公開鍵に変換し、できたSSH2用の鍵を SSH2 Serverに転送して使います。

$ ssh-keygen -e -f ~/.ssh/id_rsa > id_rsa_ssh2.pub

SSH2 Clientでの鍵作成

SSH2 Clientがインストールされている場合の公開鍵の作り方を説明します。 今度は、コマンドが"ssh-keygen2"になります。

$ ssh-keygen2 -t rsa
Generating 2048-bit rsa key pair
    9 oOo.oOo.oOo
Key generated.
2048-bit rsa, someone@ssh2-client.example.com, Sat Jan 01 2000 00:00:00 +0900
Passphrase :
Again      :
Private key saved to /home/someone/.ssh2/id_rsa_2048_a
Public key saved to /home/someone/.ssh2/id_rsa_2048_a.pub

SSH2ではOpenSSHと違い、鍵を作っただけではダメで、使用する秘密鍵を登録 する必要があります。具体的には、以下のようにidkeyに続いて秘密鍵のファ イル名を書いた、"~/.ssh2/identification"ファイルを作成します。

idkey id_rsa_2048_a

最後に、SSH2の公開鍵をOpenSSH Server用の鍵に変換する方法を書きます。 SSH2側では変換することができないので、まずOpenSSHがインストールされて いる計算機に公開鍵(id_rsa_2048_a.pub)を転送します。続いて、以下のよう にしてOpenSSH用の公開鍵に変換します。

$ ssh-keygen -i -f id_rsa_2048_a.pub > id_rsa_openssh.pub

OpenSSH Serverでの公開鍵認証設定

次に、サーバー側の設定をしましょう。ログインしたいサーバーがOpenSSHを 使っている場合、クライアントの公開鍵をサーバーに転送して、 "~/.ssh/authorized_keys"に書き足せば次のログインから公開鍵 認証が行われます。手順としては以下のようになります。

$ cat ~/.ssh/id_rsa.pub | ssh someone@openssh-server.example.com "cat >> ~/.ssh/authorized_keys"
someone@openssh-server's password:

ちなみに、SSH2 ClinentからOpenSSH Serverなら一度scpでキーをコピーして から、サーバーで鍵フォーマットの変換をする必要がありす。

$ scp ~/.ssh/id_rsa_2048_a.pub someone@openssh-server.example.com:~/id_rsa_client1.pub
someone@openssh-server's password:
$ ssh someone@openssh-server.example.com
someone@openssh-server's password:
% ssh-keygen -i -f id_rsa_client1.pub >> ~/.ssh/authorized_keys
% exit

SSH2 Serverでの公開鍵認証設定

SSH2 Serverでは、公開鍵を直接ファイルに書き足すのではなく、公開鍵ファ イル名をサーバーの"~/.ssh2/authorization"に書き足すようになっ ています。具体的には以下のような手順になります。

$ scp ~/.ssh/id_rsa_2048_a.pub someone@ssh2-server.example.com:~/.ssh2/id_rsa_client1.pub
someone@ssh2-server's password:
$ ssh someone@ssh2-server.example.com
someone@ssh2-server's password:
% echo "key id_rsa_client1.pub" >> ~/.ssh2/authorization
% exit

まとめ

最後に手順を大まかにまとめておきます。

OpenSSH Client -> OpenSSH Serverへのログイン
client:~/.ssh/id_rsa.pubをserver:~/.ssh/authorized_keysに付け足す。
OpenSSH Client -> SSH2 Serverへのログイン
client:~/.ssh/id_rsaをSSH2用の鍵に変換し、それをserver:~/.ssh2/id_rsa_hogehoge.pubにコピーする。さらに、server:~/.ssh2/authorizationファイルにid_rsa_hogehoge.pubを登録。
SSH2 Client -> OpenSSH Serverへのログイン
client:~/.ssh2/id_rsa_2048_a.pubをサーバーにコピする。サーバーで、SSH2鍵->OpenSSH鍵に変換して、server:~/.ssh/authorized_keysに付け足す。
SSH2 Client -> SSH2 Serverへのログイン
client:~/.ssh2/id_rsa_2048_a.pubをserver:~/.ssh2/id_rsa_hogehoge.pubにコピーする。さらに、server:~/.ssh2/authorizationファイルにid_rsa_hogehoge.pubを登録。

ご意見、ご感想は、花房 真広 <webmaster@hanabusa.net>まで。メールする前にtop pageの注意書を読んでください。