回答:
のキャッシュされたキーを削除します 192.168.1.123
ローカルマシン上:
ssh-keygen -R 192.168.1.123
ssh-keyscan -t ecdsa my.server.domain >> ~/.ssh/known_hosts
その後は、最初にホストに接続するときに新しいキーを検証する必要はありません。
私の場合 ssh-keygen -R ...
警告を修正しませんでした。私はこのような追加情報を持っていました:
Offending key for IP in /home/myuser/.ssh/known_hosts:8
Matching host key in /home/myuser/.ssh/known_hosts:24
手動で編集しただけです ~/.ssh/known_hosts
そして8行目( "問題のあるキー")を削除しました。私は再接続しようとしました、ホストは恒久的に追加されました、そしてその後すべてがうまくいった!
sed -e '8d' /home/myuser/.ssh/known_hosts
行番号を置き換える 8
システムに表示されているものとファイル名。
私は自分のLANコンピュータと私の2つのウェブホスティングアカウントの間でたくさんのやりとりをしています。 ssh -v
どこで何が悪かったのかを確認する。
この問題を解決しただけで回答に満足できなかったので、私は自分自身が「なぜ」なのか本当に知りたいと思いました…
私の場合のトリガーは、次のとおりです。職場で新しいサーバーOSをインストールし、openssh-serverパッケージをインストールすると、職場のサーバーで新しいホストキーのセットが生成されました。以前は、私のサーバーOSはすべてUbuntuで、今回はDebianに変更されました(そして、パーミッションに微妙な違いがあるのではないかと思います)。
すべてのOSがUbuntuで、最初にSSHを起動したときにサーバのOSを再インストールすると、この種の警告が表示されます。これは、上記のサイレント警告より優先されます。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
06:ea:f1:f8:db:75:5c:0c:af:15:d7:99:2d:ef:08:2a.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending key in /home/user/.ssh/known_hosts:4
RSA host key for domain.com has changed and you have requested strict checking.
Host key verification failed.
それから私は開きます 〜/ .ssh / known_hosts sshを起動しているコンピュータで、その行を削除して再接続すると、次のようになります。
chris@home ~ $ ssh work
The authenticity of host '[work]:11122 ([99.85.243.208]:11122)' can't be established.
ECDSA key fingerprint is 56:6d:13:be:fe:a0:29:ca:53:da:23:d6:1d:36:dd:c5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[work]:11122 ([99.85.243.208]:11122)' (ECDSA) to the list of known hosts.
Linux rock 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64
その約ビット:11122は私がファイアウォールからSSHをルーティングするポート番号です
私は以前のUbuntuサーバーからのバックアップをチェックし、私の新しいDebianインストールと比較しました。
Ubuntu: Debian:
# Package generated configuration file # Package generated configuration file
# See the sshd(8) manpage for details # See the sshd_config(5) manpage for details
# What ports, IPs and protocols we listen for # What ports, IPs and protocols we listen for
Port 22 Port 22
# Use these options to restrict which interface # Use these options to restrict which interfaces
#ListenAddress :: #ListenAddress ::
#ListenAddress 0.0.0.0 #ListenAddress 0.0.0.0
Protocol 2 Protocol 2
# HostKeys for protocol version 2 # HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_dsa_key
------------------------------------------------ HostKey /etc/ssh/ssh_host_ecdsa_key
#Privilege Separation is turned on for security #Privilege Separation is turned on for security
UsePrivilegeSeparation yes UsePrivilegeSeparation yes
そうです、おそらく最近、ホストがecdsaキーを使い始めました。最近のUbuntuの変更に基づいて、私はアップデートを非難するでしょう。 Ubuntuが私が頼りにしていた堅実なLinux OSから離れたのは、今回Debianをインストールした理由です。
私は読みました security.SE q / a on ecdsa からすでにその行を削除しています sshd_config
私の新しいDebianサーバ。 (そして走った service ssh restart
)
ubuntu debian server
そして、あなたは私の言っていることがわかります
ssh-keygen -f "/root/.ssh/known_hosts" -R 192.168.1.123
これにより、known_hosts.oldの下にある既存のキーが置き換えられ、新しいキーが作成されます。 この解決策は同じシナリオで私のために働いた
動的アドレス指定を使用するとIPアドレスが常に変わるため、プロンプトが毎回表示されます。静的IPを使用するようにしてください。そうすれば、鍵を一度だけ追加するだけで済みます。
接続に同じユーザーを使用していますか?
あなたがユーザーのようなローカルPCにログインしている場合 ジョン そしてサーバーに接続 B ユーザー様 アドルフ@ B そしてすべてがOKである、それはあなたがユーザーのようにローカルPCにログインしているならすべてがOKであるという意味ではありません ジェーン サーバーへの接続 B ユーザー様 アドルフ@ B 。
PCからユーザーBedaとしてサーバーBにログインしたい場合 A パスワードなしで、すべてPCからこのコマンドを試してください。 A :
ssh-keygen -t rsa
このコマンドはキーを生成してファイルに保存します。お任せください パスフレーズ 空の。
ssh Beda@B mkdir -p .ssh
ディレクトリが存在しない場合、このコマンドはディレクトリを作成します。そうでなければ、エラーメッセージを表示しません。
cd ~/.ssh
このコマンドは、ディレクトリをユーザーのホームディレクトリ./sshに変更します。
cat id_rsa.pub | ssh Beda@B 'cat >> .ssh/authorized_keys'
このコマンドはファイルを印刷します id_rsa.pub (あなたの公開鍵)に authorized_keys サーバー上。
重要:Bedaは接続しているサーバーのユーザー名、BはサーバーのIPです。
これで、パスワードやパスフレーズを使わずにサーバーBに接続できます。
ssh Beda@B
スレッド ここに 助けになるかもしれません。
基本的には、そのホストのRSAキーとECDSAキーの両方を削除してから、 ssh-keyscan
それらをあなたの元に戻すために known_hosts
この競合を引き起こさないような方法でファイルを作成してください。私は同じ問題を抱えていたときそれは私のために働いた。
質問:これが原因で何が起こるのでしょうか。
そのため、SSHサーバーのホストキーが変更されました。 何が変わったのですか? 言うのは難しいです。 ここにいくつかの推測があります:
質問:...そしてどのように修正すればよいですか。
他の人が既に回答しているので、あなたのアカウントがキャッシュしたmyserverのキャッシュされたECDSAホスト鍵を削除します。
このエラーは長い間私を悩ませ続けました。どういうわけかそれは私がやるかどうかの違いを生んだ
ssh host
または
ssh host.domain
https://askubuntu.com/questions/87449/how-to-disable-strict-host-key-checking-in-ssh
それから設定ファイルを変更するオプションを教えてください。私のスクリプトを見る https://askubuntu.com/a/949731/129227 プロセスを自動化するためにあります。
CanonicalizeHostname
そして CanonicalDomains
厳密なチェックを削除することを避け、sshがhostとhost.domainを同じものと見なすようにします。
Secure Shellをアンインストールして再インストールすることで、Chromebookでこれを修正しました。
既知のホストのフィンガープリントを削除する方法は次のとおりです。 known_hosts
Chrome OSの場合)
接続が失敗したときのssh出力で、問題のあるホストエントリのインデックスを見つけます。例えば、下の行では問題のあるインデックスは 7 :
Offending ECDSA key in /.ssh/known_hosts:7
JavaScriptコンソールを開きます( CTRL + シフト + J Secure Shellウィンドウの)をクリックして、次のように入力します。 INDEX
適切な値(例: 7 ):
term_.command.removeKnownHostByIndex(INDEX);
この解決策は、 Leo Gagglのブログ 。
The ECDSA host key for server has changed
。私の方法は、ドメインに関する関連キャッシュ文字列を削除することです~/.ssh/known_hosts
。それからsshが動作します。