コマンドの送信時にSSHがホストキーエラーで失敗するが、コマンドなしでも機能する


0

現在、古い死にかけているサーバーで処理されているホストキー認証を使用してSSHをサポートできるようにサーバーをセットアップしています。現時点では、SSHに正常に接続し、通常のようにターミナルで対話できます。ただし、コマンドを含めるか、RSyncコマンドにSSHを挿入すると、「ホストキーの検証に失敗しました」というエラーが表示されます。

したがって、このコマンドは機能します:

ssh -o StrictHostKeyChecking=no -i /cygdrive/C/keys/id_rsa user@192.168.0.2

以下はそうではありません:

ssh -o StrictHostKeyChecking=no -T -i /cygdrive/C/keys/id_rsa user@192.168.0.2 ssh 192.168.0.2 mkdir -p /mnt/storage/new_folder

ただし、どちらも古いサーバーを指すときに機能するため、コマンド自体は問題ないはずです。さらに、コマンドを変更しないように管理できれば、下位互換性を保つことができます。

新しいサーバー(古いサーバーを模倣するように設定されている)のsshd_config設定は、それらが役立つ場合に備えて以下に含まれていますが、ここでの項目はコメントアウトされていないもののみです。

HostbasedAuthentication機能なし
RhostsRSAAuthentication(RhostsRSA認証の許可)なし
PermitEmptyPasswordsなし
ChallengeResponseAuthenticationの無
UsePAMはい
X11Forwardingはい
PrintMotdいいえ
PrintLastLogはい
TCPKEEPALIVEはい
AcceptEnv LANG LC_ *
サブシステムSFTPの/ usr / libに/のopenssh / SFTPサーバ
PubkeyAuthenticationはい
RSAAuthenticationはい
LoginGraceTime 2メートル
のPermitRootLoginはい
はいStrictModesを

新しいサーバーはUbuntu 17.10です(次のサーバーが間もなくリリースされるとLTSに更新されます)。古いサーバーはDebian 6.0.6です。

編集:言及するのを忘れて、このエラーは私が '-e'でRSyncを使用するときにも発生します。ただし、RSyncコマンドusername@192.168.0.2:/mnt/storage/new_folderで、リモートパスパラメーターを使用して問題を解決できることがわかりました。「username @」を削除すると、エラーが再度表示されます。繰り返しますが、失敗したバージョンは古いサーバーで正常に動作し、新しいサーバーでのみ失敗します。また、これはレガシーコードであるため、古いコマンドをそのまま使用できる場合、更新をプッシュする時間を大幅に節約できます。


ホストBで実行しようとしているコマンドは、「ホストBに接続してからmkdirそこで実行する」ようです。mkdirホストBで実行するだけではどうですか?
スコット

@Scottこれは、社内で使用される展開済みソフトウェアの一部であり、このコマンドは他のコマンドと比較してデバッグが最も簡単です。他のユーザーも同じエラーを受け取ります。実際には、編集を追加する必要があることを思い出させます。
スティーブンテオドリ

ああ、もう2つ:(1)どのエラーメッセージが(正確に)表示されていますか?(2)マシンで実行しているオペレーティングシステムは何ですか?
スコット

回答:


1

OK、ホストA(指定なし)に座って、コマンド1を実行すると:

ssh -o StrictHostKeyChecking=no -i /cygdrive/C/keys/id_rsa user@192.168.0.2

ホストB(192.168.0.2)でインタラクティブシェルを取得します。ただし、コマンド2を実行すると:

ssh -o StrictHostKeyChecking=no -T -i /cygdrive/C/keys/id_rsa user@192.168.0.2 ssh 192.168.0.2 mkdir -p /mnt/storage/new_folder

(ホストAから)、エラーが発生します。

OK、ホストAからコマンド1を実行し、ホストBで対話型シェルを取得します。ホストBでコマンド2bを実行します。

ssh 192.168.0.2 mkdir -p /mnt/storage/new_folder

何が起こるのですか?これも失敗する場合、問題は「コマンドを送信するとSSHがホストキーエラーで失敗するが、コマンドなしで機能する」ではなく、ホストBがそれ自体にsshできない、またはより具体的には「ユーザーホストBでsshをホストBにできるように構成されていません。

そして、完全を期すために、コマンド2cを実行するとどうなりますか:

ssh -o StrictHostKeyChecking=no -T -i /cygdrive/C/keys/id_rsa user@192.168.0.2  mkdir -p /mnt/storage/new_folder

(ホストAから)?


どうもありがとう、私はあなたがそのようなあなた自身のマシンにsshできることを知りませんでした。私があなたの手順に従ったとき、それは確かにエラーを与えました。問題は、古いサーバーからキーファイルを転送したときに、新しいサーバーのauthorized_keysファイルのみを更新したことです。/home/username/.ssh/にキーファイルを追加しませんでした。ファイルを追加し、アクセス許可を設定すると、シナリオおよび自分のテストで機能し始めました。どうもありがとうございました!
スティーブンテオドリ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.