4

Fabric python スクリプトを使用して本番サーバーにログインし、「ls」コマンドをリモートで実行しようとしています。実際には他にも実行するコマンドがたくさんありますが、それを機能させるための簡単なリストから始めています。私の運用サーバーは SSH を使用しており、ロックされているため、秘密鍵ファイルとパスワードが必要です。

現在、これを機能させる方法についていくつかのサイトを読んでいますが、何らかの理由でログインできません。正常に接続されていると思いますが、次のようなメッセージが表示されます。

「root」のログインパスワード:

したがって、パスワード (env.password のものと同じ) を入力すると、メッセージがポップアップし続けます。

ここに私の fabfile.py があります:

from fabric.api import *

env.use_ssh_config = True
env.hosts = ["myserver.net"]
env.user = "root"
env.key_filename = "/home/myusername/.ssh/id_rsa.ppk"
env.password = "mypassword"
env.port = 22

def testlive():
  run("ls")

/home/myusername/.ssh/config の SSH 構成は次のとおりです。

Host myserver
  hostname myserver.net
  port 22
  IdentityFile ~/.ssh/id_rsa.ppk

これを機能させる方法についてのアイデアはありますか?

どうもありがとう

4

3 に答える 3

8

その部分を機能させるために、最初にコマンドラインとは別にSSH構成をテストすることになりました。私はPuTTYを使用してSSHキーを生成していたため、SSHキーに問題があり、その形式はLinuxが使用するOpenSSHの形式と互換性がなかった可能性があると思います。

そのため、最初にLinuxマシンで秘密鍵のパスワードなしで新しいSSH鍵を作成しました。これにより、id_rsaとid_rsa.pubの2つのファイルが作成されました。次に、公開鍵文字列をid_rsa.pubから本番サーバーのauthorized_keysファイルにコピーしました。次に、コマンドラインからテストしました。それが機能するようになったら、Fabricでテストしました。

そのため、構成は次のように変更されました。

from fabric.api import *

env.use_ssh_config = True
env.hosts = ["myserver"]
env.user = "root"
env.key_filename = "/home/myusername/.ssh/id_rsa"
env.password = ""
env.port = 22

def testlive():
  run("ls")

/home/myusername/.ssh/configにあるSSH設定は次のとおりです。

Host myserver
  hostname myserver.net
  port 22
  IdentityFile ~/.ssh/id_rsa

fab testliveコマンドラインから実行すると正常に動作するようになりました。

于 2012-09-16T21:53:51.643 に答える
0

この問題は、PCI コンプライアンスのためにサーバーを Logjam に対して強化した後に発生しました。https://weakdh.org/sysadmin.htmlを参照として使用して、/etc/ssh/sshd_config を更新して次の行を含めました。

KexAlgorithms curve25519-sha256@libssh.org

1.15.2 の時点で、paramiko はこの楕円鍵交換アルゴリズムをサポートしていないようです。weakdh.org ページには、非楕円型のgroup14-sha1diffie-hellman アルゴリズムは Logjam に対して脆弱ではないことが示されているため、行を次のように変更します...

KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group14-sha1

...SSH を介して Fabric を展開し、PCI コンプライアンスを維持することができました。

于 2016-01-20T17:10:04.940 に答える