web-dev-qa-db-ja.com

SSHの公開鍵をエクスポートするにはどうすればよいですか?

2つのサーバー間でsshセッションをセットアップする必要があり、スクリプトに毎回ユーザー名とパスワードを入力させたくありません。

ただし、SSHサーバーがその構成をどこから使用しているかはわかりません。

bash-2.05# ssh -V
Sun_SSH_1.1, SSH protocols 1.5/2.0, OpenSSL 0x0090700f

/ etc/ssh /と〜/ .ssh /の両方に証明書ファイルがあります。 SSHの構成ファイルは1つしか見つからず、/ etc/ssh/ssh_configにありますが、データは含まれていません(すべてコメント化されています)。

証明書がどこに保存されているか、または他のサーバーに転送できるようにエクスポートする方法を誰かが知っていますか?私は設定ファイルが私に答えを与えることを望んでいましたが、それらはほとんどまたはまったく助けを提供しません。

12
Chris Dale

「証明書」によるユーザーレベルでの公開鍵認証を意味し、デフォルトの場所でssh-keygenを使用してそれらを作成したと想定すると、sshクライアントがそれらを見つける場所にあるはずです。キーは、通常~/.ssh/id_rsaに保存されるプライベートパーツと~/.ssh/id_rsa.pubにパブリックパーツで構成されます。最後の1つは、通常~/.ssh/authorized_keysにリモートサーバーに転送する必要があります。

キーを別のサーバーに転送する最も簡単な方法は、ターゲットマシンでssh-copy-idを使用することです。作成時にデフォルトの場所を使用した場合、このキーが自動的に使用されます。

/etc/ssh/ssh_configはクライアント用であることに注意してください。サーバーで/etc/ssh/sshd_configを確認する必要があります。セットアップでは、両方のサーバーがssh-clientとssh-serverの両方として機能するため、両端で両方のファイルを確認する必要があります。

17
Carsten Thiel

スクリプトのログインユーザーとなるユーザーのssh公開鍵を見つける必要があります。

たとえば、serverAとserverBがある場合、次のようにします。

Sudo adduser scriptrunner
...
Sudo su - scriptrunner
ssh-keygen
...
cat .ssh/id_rsa.pub
ssh-rsa AAAAB3Nza...... scriptrunner@serverA

次に、ServerBで同様のことを行います

次に、serverAで、serverBのscriptrunnerユーザーの公開鍵を/home/scriptrunner/.ssh/authorized_keysに噴出します。

serverBで反対の操作を行います(serverAのscriptrunnerユーザーを使用して、serverBの/home/scriptrunner/.ssh/authorized_keysのauthorized_keysに入力します)

次に、キーを使用してserverBからssh scriptrunner@serverAを実行できるはずです。逆も同様です。

ssh-copy-idを使用して、authorized_keysビットを実行することもできます。

2
Tom O'Connor

公開鍵認証でssh接続を確立するには、接続を開始するユーザーが公開鍵と秘密鍵のペアを持っている必要があります。多くのLinuxディストリビューションでは、これらのキーはデフォルトでは生成されず、ユーザー自身(または管理者が代理)が生成する必要があります。

関連するユーザーとしてログインしている場合は、ホームディレクトリに移動して実行します。

ssh-keygen

すべてのデフォルトを受け入れると、新しい鍵ペアが〜/ .ssh/id_rsaおよび〜/ .ssh/id_rsa.pubに作成されます。次に、公開鍵をコピーして、ターゲットマシンのターゲットユーザーアカウントの〜/ .ssh/authorized_keysファイルに貼り付けます。次に、ターゲットマシン(/ etc/ssh/sshd_config内)で公開鍵認証を有効にします。これで問題ありません。

[〜#〜]注[〜#〜]:初めて実行する場合、このプロセスには多くの潜在的な落とし穴があります。すべての権限が正しく、ファイルが適切な場所にある必要があります。 これ のようなハウツーに従うのがおそらく最良です。

1
wolfgangsz