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にありますが、データは含まれていません(すべてコメント化されています)。
証明書がどこに保存されているか、または他のサーバーに転送できるようにエクスポートする方法を誰かが知っていますか?私は設定ファイルが私に答えを与えることを望んでいましたが、それらはほとんどまたはまったく助けを提供しません。
「証明書」によるユーザーレベルでの公開鍵認証を意味し、デフォルトの場所で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の両方として機能するため、両端で両方のファイルを確認する必要があります。
スクリプトのログインユーザーとなるユーザーの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ビットを実行することもできます。
公開鍵認証でssh接続を確立するには、接続を開始するユーザーが公開鍵と秘密鍵のペアを持っている必要があります。多くのLinuxディストリビューションでは、これらのキーはデフォルトでは生成されず、ユーザー自身(または管理者が代理)が生成する必要があります。
関連するユーザーとしてログインしている場合は、ホームディレクトリに移動して実行します。
ssh-keygen
すべてのデフォルトを受け入れると、新しい鍵ペアが〜/ .ssh/id_rsaおよび〜/ .ssh/id_rsa.pubに作成されます。次に、公開鍵をコピーして、ターゲットマシンのターゲットユーザーアカウントの〜/ .ssh/authorized_keysファイルに貼り付けます。次に、ターゲットマシン(/ etc/ssh/sshd_config内)で公開鍵認証を有効にします。これで問題ありません。
[〜#〜]注[〜#〜]:初めて実行する場合、このプロセスには多くの潜在的な落とし穴があります。すべての権限が正しく、ファイルが適切な場所にある必要があります。 これ のようなハウツーに従うのがおそらく最良です。