はじめに
さくらVPSを使ってサーバー構築を練習しています。
以前構築したものをやり直したかったので、OSの再インストールを実行しました。
その後SSH接続すると、下記警告が表示されてしまいました。
対応内容と、openssh操作について深堀りしたのでまとめておきます。
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
環境
- MacBook Pro M2(macOS Sonoma v14.0)
- OpenSSH_9.3p2
- LibreSSL 3.3.6
問題
OS再インストールを行うと、サーバー側のホストキーが更新される。
その状態でSSH接続すると、私のPCのknown_hosts
に保存しているホストキーと合わない、そのため接続しようとしているサーバーが、異なるホストキーを見せてきているという警告メッセージが表示される。
解決方法
openSSHを使って、問題を解消。
known_hosts
に保存されている、接続しようとしているサーバーのホストキー情報を削除して書き換える。
1.known_hostsファイルを確認する
下記コマンドを実行すると、ホストキー情報が保存されていることがわかります。
cat known_hosts | grep domain
2.known_hostsファイルからホストキー情報を削除する
ssh-keygen -R domain
3.ssh認証を行う
ホストキーが削除できたら、SSH接続を行います。
これで新しいホストキーがknown_hosts
に保存されます。
ssh username@domain
問題自体はこれで解決できたと思います。
[おまけ]公開鍵暗号認証設定を行う
ここから先はおまけです。
sshを使ったパスワード認証はできるようになったので、公開鍵認証にしてよりセキュアにします。
1.公開鍵/秘密鍵を生成する
セキュリティの堅牢度合いは調整してください。
コメントに何を書くべきかは、あまり分かりませんでしたので、適当に書いています。
生成時に、ファイル名を入れるか
パスフレーズをどうするか確認されます
ssh-keygen -t ed25519 -a 100 -C "sakura_vps serverA"
2.生成した鍵をVPSサーバーに登録する
下記コマンドを実行すると、パスワード認証が行われます。
パスすると、指定した公開鍵情報が.ssh/authorized_keys
に保存されます。
ssh-copy-id -i identity_file user@domain
接続して確認しましょう。
この時にファイルの権限も確認します。
600になっていれば良いと思います。なっていなければこの段階で変更しましょう。
ssh user@domain
password:
cat ~/.ssh/authorized_keys
3.接続用設定ファイルを作成する
~/.ssh/config
というファイルを作成するとssh接続時に、このファイルを読み込んでくれます。
誰にでもいじられると困るので、一番使うユーザーだけで変更できるようにしておきます。
touch ~/.ssh/config
sudo chown username
sudo chmod 600 ~/.ssh/config
4.設定を記述する
~/.ssh/config
に以下の記述をします。
Host host(好きな名前)
HostName ドメイン
User ユーザー
Port ポート
IdentityFile 公開鍵パス
PasswordAuthentication パスワード認証を使用するか
AddKeysToAgent ssh-agentに追加するか
IdentitiesOnly 使用できるIdentityFileを固定するか
5.公開鍵暗号認証を通す
設定が完了したら、公開鍵暗号認証を通します
config
ファイルのreloadは不要です。
セッション開始時は、パスフレーズの入力を求められます。
これ以降、セッションが切れるまでパスフレーズ入力を省略することができます。
ssh host
Enter passphrase for key '/Users/user/.ssh/host':
6.ssh-agentセッションの確認
ssh-add
コマンドを使うと、現在SSH Agentセッションに登録されているすべての鍵のリストが表示されます。
セッション中に使用できる鍵の確認や、鍵がエージェントに正しく追加されているか確認するときに使います。
ssh-add -l
鍵をssh-agentから削除するときは、下記を実行すると削除できます。
ssh-add -d IdentityFile
参考にさせていただいたもの
AI cloude3.7 sonnet