SSHを実行しているサーバーでは、クライアントからサーバーにファイルをコピーできるように、1つの特定のSSHホストのいくつかの古いアルゴリズムを許可する必要があります。クライアントが古くてゴミなので変更できません。そのため、サーバー側で次のように/etc/sshd_configを編集して問題を解決しました.
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
しかし、問題はssh-rsaが安全ではないということです。だからこのまま去りたくありません。ソースIPが1.2.3.4の場合、これらのアルゴリズムをそのホストに適用することを具体的に許可し、そのホストがこれらのアルゴリズムを個別に使用できるようにこれを設定するにはどうすればよいですか。
答え1
他のホスト固有の設定を指定するのと同じ
Host my.hostname.example.com
PubkeyAcceptedKeyTypes +ssh-rsa
HostKeyAlgorithms
ただし、古いリモートホストにのみ接続したい場合は、このオプションは必要ありません。
答え2
sshd
ホスト(またはユーザー)に対してさまざまな構成オプションを使用する方法は、Match
条件付き行ブロックを使用することです。接続しているクライアントのホスト名またはIPアドレスを解決できるかどうかに応じて、Match Host ...
これがより適切である場合とそうでない場合があります。たとえば、Match Address ...
sshd
Match Address 10.11.12.13 10.9.8.7
PubkeyAcceptedKeyTypes +ssh-rsa
マニュアルsshd_config
ページは使い方に関する詳細情報を提供しますMatch
が、ほとんどのマニュアルページで明確に説明されていない1つはsshd_configファイル内のMatchブロックの正しい場所です。 ファイルの最後に。
私のUbuntu 20.04のマニュアルページには次のように記載されています。
「一致」行のすべての条件が満たされると、次の行のキーワードは、別の「一致」行またはファイルの最後まで、構成ファイルのグローバルセクションで設定されたキーワードをオーバーライドします。
Matchの後の行がグローバル構成ディレクティブではなく、ファイルの最後まで他のMatchブロックのディレクティブであることを確認するには、その文を慎重に解釈する必要があります。
ソースコードのコメントブロックは、次のようにこれをより明示的に表します。この回答は昨年のものです。。 Matchブロックが見つかると、変数はクリアactivep
(0に設定)され、ファイルの残りの部分にあるパラメータはグローバル設定ディレクティブとは見なされません。すべてMatchブロックの一部です。
ほとんどの答えは、この質問とは関係のないいくつかの珍しい点についてです。ソースコードにコメントが表示されていてリンクしました。