---

title: OpenSSHをアップデートしたら古いサーバにログインできなくなった時の対処
date: 2022-01-12
description: 最新の OpenSSHはデフォルトで古いハッシュアルゴリズムを受け付けないようになった
image: openssh.png
tweet_url: https://twitter.com/shimariso/status/1481264197208244226
---
[OpenSSH 8.8](https://www.openssh.com/txt/release-8.8)から、デフォルトでは[SHA-1ハッシュアルゴリズム](https://ja.wikipedia.org/wiki/SHA-1)を使ったRSA署名を受け付けなくなった。この変更が原因で、古いサーバにSSHでログインしようとすると

```text
Unable to negotiate with xxx.xxx.xxx.xxx port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss
```

のようなエラーで拒否される。この場合、```~/.ssh/config``` にて

```text
Host old-host.yourdomain.com
    HostkeyAlgorithms +ssh-rsa
	PubkeyAcceptedAlgorithms +ssh-rsa
```

のようにして回避できる。ただし無論これはその場しのぎの対処であって、将来のバージョンで本格的に SHA-1への対応が削除されないとも限らない。SHA-1で署名された鍵を使用するようなバージョンの OpenSSHを使用している OS(e.g. RHEL/CentOS 6)は既にEOLを迎えているはずなので、サーバを新しくするべきだ。