以前の記事では、ssh キー ベースの認証をセットアップして、パスワードなしで ssh と scp を実行する方法について説明しました。次の 3 つのシナリオ:
<オール>
この記事では、SSH2 (ローカル ホスト) から OpenSSH (リモート ホスト) にパスワードなしで ssh と scp を実行する方法を説明します。
1.ローカル ホストとリモート ホストの SSH バージョンを特定する
この例では、local-host は SSH2 を実行しており、remote-host は OpenSSH を実行しています。
[local-host]$ ssh -V ssh: SSH Secure Shell 3.2.9.1 (non-commercial version) on i686-pc-linux-gnu [remote-host]$ ssh -V OpenSSH_4.3p2, OpenSSL 0.9.8b 04 May 2006
2. ssh-keygen2 を使用して、ローカル ホストで SSH2 認証キー ペアを生成します
SSH2 では、以下に示すように、ssh-keygen は ssh-keygen2 へのソフトリンクになります。
[local-host]$ ls -l /usr/local/bin/ssh-keygen lrwxrwxrwx 1 root root 11 Jul 31 2006 /usr/local/bin/ssh-keygen -> ssh-keygen2 [local-host]$ ssh-keygen Generating 2048-bit dsa key pair 7 o.oOo..oOo.o Key generated. 2048-bit dsa, jsmith@local-host, Sun Oct 19 2008 14:49:42 -0700 Passphrase : [Enter the password here] Again : Private key saved to /home/jsmith/.ssh2/id_dsa_2048_a Public key saved to /home/jsmith/.ssh2/id_dsa_2048_a.pub
公開鍵と秘密鍵は、ホーム ディレクトリの下の .ssh2 フォルダーに格納されます。この例では、/home/jsmith/.ssh2 の下にあります。
秘密鍵は誰とも共有しないでください。
デフォルトでは ssh-keygen2 DSA (デジタル署名アルゴリズム) 鍵ペアを生成します。以下に示すように、RSA キー ペアを生成することもできます。
[local-host]$ ssh-keygen -t rsa
3. SSH2 公開鍵をローカル ホストから OpenSSH を実行しているリモート ホストにコピーします
local-host:/home/jsmith/.ssh2/id_dsa_2048_a.pub ファイルを remote-host:/home/jsmith/.ssh/id_dsa_1024_a.pub にコピーします。リモートホストで vi /home/jsmith/.ssh/id_dsa_1024_b.pub を実行し、ローカルホストから公開鍵の内容をコピーします。
[remote-host]$ vi /home/jsmith/.ssh/id_dsa_1024_a.pub ---- BEGIN SSH2 PUBLIC KEY ---- Subject: jsmith Comment: "2048-bit dsa, jsmith@local-host Sun Oct 19 2008 14:49:42 -070\0" 7ZTVd7H63VyVqBIqfmEBALVa6VKtALZkydlOiPasikEQfujH07tjW+OffaRufFDG0VQESj 5iGSvMtmBBj8wQxGlvJ/dayVqBvvHzMao8bwGC+HFUtH1un7uyIEwOqU1fNzEpghC97mIx tIxJA7ZTVd7H63VIqmzlLbp/ZCd6bcJLvZEepMz96nlNB4NJ5UYIfdgXNhf/TrJD8COWQs t6jsP6RG/WrpHi5iGSvMtmBBj8wQGHddexkRnf/o5YMFJZRo4Iwc7+bgYrIyywBZnfLL7T RTk9TBfWzgJHy/y1tTtCMvVooWvFZbG5AiV3de63MxBaD0o68SASyXZzVM+MabXhjcdXFY 2vjq2vJxOzunEAAAAVAOTeOzDCnj3K5iGSvMtmBBj8wQGHAAABAA38sGpHEfSxLx5MjQci dko1pKuV1W9rOK3y19A2J2N6rSdWYb7Zyzw8Gr7kTMWX1TP5WhRGCUhNRYnjI+4wgZIZdC lfGdp8MGI3HBg9CAr702BOzRTMnW0aqsGjrbhcwhWaDgRymhBh++nGAhHxeWn4ApJ8F6kT 8HaAm3dFYXpHCaZ/xuKPXr4DFugGl8MRDU8TwioNE9kRi0Ko/kB5LTHuGhMPHGshMJeVGi PQTrt9NAzgYyJeT9RB9VZadgElMvQ9S0+fo6ipOA== ---- END SSH2 PUBLIC KEY ----
4.ローカル ホストで、~/.ssh2/identification ファイルを作成します
ローカル ホストに次のファイルを作成します。
$ vim ~/.ssh2/identification IdKey id_dsa_2048_a
5.リモートホストで、SSH2 公開鍵を OpenSSH 公開鍵に変換します
これは、OpenSSH を実行しているリモート ホストで実行する必要があります。 OpenSSH と SSH2 形式の間でキーを相互に変換できるのは OpenSSH だけです。
[remote-host]$ ssh-keygen -i -f ~/.ssh/id_dsa_1024_a.pub > \ ~/.ssh/id_dsa_1024_a_openssh.pub
以下に示すように、変換された OpenSSH 公開鍵を ~/.ssh/id_dsa_1024_a_openssh.pub ファイルから authorized_keys ファイルにコピーします。
[remote-host]$ vi ~/.ssh/authorized_keys ssh-dss 5iGSvMtmBBj8wQdegAEBALVa6VKtALZkydlOiPasikEQfujH07tjW+OffaRufFD G0VQESjq+YlVTWcXxStz0xGlvJ/dayVqBvvHzMao8bwGC+HFUtH1un7uyIEwOqU1fNzEpgh C97s143S8zBcTAGtdegte3IqmlLbp/ZCd6bcJLvZEepMz96nlNB4NJ5UYIfdgXNhf/TrJD8 COWQst6jsP6RG/WrpHiI4QVDM6tZVZ4CnGjm1QPkRnf/o5YMFJZRo4Iwc7+bgYrIyywBZnf LL7TRTk9TBfWzgJHy/y1tTtCMvVooWvFZbG5AiV3de63MxBaD0o68SASyXZzVM+MabXhjcd XFY2vjq2vJxOzunEAAAAVAOTeOzDCnj3K5iGSvMtmBBj8wQGHAAABAA38sGpHEfSxLx5MjQ dFYXpHCaZ/xuKPXr4DFugGl8MRDU8TwioNE9kRi0Ko/kB5LTHuGhMPHGshMJeVGiPQTrt9N AzgYyJeT9RB9VZadgElMvQ9S0+fo6ipOA==
6.リモートホストで .ssh ディレクトリへの適切な権限を設定
openSSH を実行しているリモート ホストで、次の権限を設定してください。これがないと、ssh であらゆる種類の問題が発生します。
$ chmod 755 ~ $ chmod 755 ~/.ssh $ chmod 644 ~/.ssh/authorized_keys
7. SSH キー認証を使用して、ローカル ホストからリモート ホストにログインします
以下に示すように、ローカル ホスト (SSH2) からリモート ホスト (OpenSSH) への ssh を実行して、鍵ベースの認証が正しく機能するかどうかを確認します。
[local-host]$ [You are on local-host here] [local-host]$ ssh -l jsmith remote-host Host key not found from database. Key fingerprint: bitaz-navun-gogus-mptop-ljilk-qwlem-ftrtm-llmak-topok-zuiof-bnmix 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/jsmith/.ssh2/hostkeys/key_22_remote-host.pub host key for remote-host, accepted by jsmith Sun Oct 19 2008 15:06:42 -0700 Passphrase for key "/home/jsmith/.ssh2/id_dsa_2048_a" with comment "2048-bit dsa, jsmith@local-host, Sun Oct 19 2008 14:49:42 -0700":[Enter password] Last login: Sun Oct 19 14:01:48 2008 from 192.168.1.10 [remote-host]$ [You are on remote-host here]
注意 :ローカル ホストからリモート ホストへの ssh または scp の実行中に次のエラーが発生した場合は、SSH でアルゴリズム ネゴシエーションに失敗した問題を解決する方法を参照して、この問題を解決してください。
[local-host]$ ssh -l jsmith remote-host warning: Authentication failed. Disconnected; key exchange or algorithm negotiation failed (Algorithm negotiation failed.)
パスワードを入力せずに ssh と scp を実行するには、次の 2 つの方法があります:
8.ローカル ホストで SSH エージェントを起動する
SSH エージェントはバックグラウンドで実行され、秘密鍵を保持し、パスフレーズを何度も入力することなく ssh と scp を実行します。
[local-host]$ ssh-agent $SHELL
9.ローカル ホスト上の SSH エージェントに秘密鍵をロードします
[local-host]$ ssh-add Adding identity: /home/jsmith/.ssh2/id_dsa_2048_a.pub Need passphrase for /home/jsmith/.ssh2/id_dsa_2048_a (2048-bit dsa, jsmith@local-host, Sun Oct 19 2008 14:49:42 -0700). Enter passphrase:[Enter your passphrase here]
10.パスワードを入力せずに、ローカル ホストからリモート ホームへの SSH または SCP を実行します
[local-host]$ [You are on local-host here] [local-host]$ ssh -l jsmith remote-host Last login: Sun Oct 19 14:20:48 2008 from 192.168.1.10 [remote-host]$ [You are on remote-host here]
この記事が気に入ったら、delicious and Stumble it で共有してください .