技術系

MacMiniにWindowsノートPCから公開鍵でsshログインする方法

技術系

Mac Mini M4を買ったので、ssh接続したくなって設定しました。そのメモです。

実行環境

サーバー側 Mac Mini

❯ sw_vers
ProductName:		macOS
ProductVersion:		15.1.1
BuildVersion:		24B2091

クライアント側 Windows

❯ systeminfo                                  
OS 名:                      Microsoft Windows 11 Home
OS バージョン:              10.0.26100 N/A ビルド 26100
OS 製造元:                  Microsoft Corporation
OS 構成:                    スタンドアロン ワークステーション
OS ビルドの種類:            Multiprocessor Free
プロセッサ:                 11th Gen Intel(R) Core(TM) i7-1195G7 @ 2.90GHz   1.80 GHz

パスワード認証

Mac側

システム設定から「一般」→「共有」と進んで、高度な設定のところにあるリモートログインをオンにします。

このとき、下にローカルホスト名とあるので、これをメモしておきます。

この時点でWindows側からsshできると思います。

Screenshot

Windows側

Windowsでコマンドプロンプトを開いて、次のsshのコマンドを打ちます。

ssh [ユーザ名]@[ローカルホスト名]

fingerprintはとりあえずyesでパスワードを打てば、sshで接続できると思います。

 

公開鍵認証

次は公開鍵認証のやり方です。

鍵の生成

まず、Windows側で公開鍵と秘密鍵を作成します。
コマンドプロンプトでssh-keygen -t ed25519 とかを打って作ってください。

すしそ
すしそ

暗号方式はRSAでもいいですが、ed25519の方がセキュアで高速らしいです。

次にMac側に公開鍵(.pubファイル)を送って、Windows側では.sshフォルダの下に秘密鍵(拡張子なしの方)を保存します。
公開鍵はメールに添付とかクラウドストレージで共有とかすれば大丈夫です。

Mac側

先ほどMacに公開鍵を送ったので、これをauthorized_keysに登録します。
ユーザディレクトリ下の.sshフォルダ(なければ作る)にauthorized_keysというファイルを作って、送られた公開鍵の中身をコピペします。もともとあれば追記してください。

次に、sshの設定をするために、/etc/ssh/sshd_configの一番下の行に以下を追記してください

PasswordAuthentication no
PubkeyAuthentication yes
PermitEmptyPasswords no
ChallengeResponseAuthentication no
PermitRootLogin no
AuthorizedKeysFile .ssh/authorized_keys

PasswordAuthentication noはパスワード認証を無効、
PubkeyAuthentication yesは公開鍵認証を有効、
PermitEmptyPasswords noは空パスワード認証を無効(攻撃に備えて)、
ChallengeResponseAuthentication noはチャレンジ応答認証を無効(攻撃に備えて)、
PermitRootLogin noはルートでのログインを無効(セキュリティ向上のため)を設定しています。
最後のAuthorizedKeysFile .ssh/authorized_keysはさっき設定した公開鍵のファイルの場所を示しています。

sshd_configでタイプミスすると、sshしたときに以下のエラーが出るので気をつけてください。(苦しみました)

kex_exchange_identification: read: Connection reset
Connection reset by **** port **

ここまでできたら一度sshを再起動した方がいいかもしれません。
設定から「リモートログイン」をオフにしてからオンにすると再起動できるようです。

Windows側

あとはssh接続するだけです。さっきのコマンドでログインできると思います。

ssh [ユーザ名]@[ローカルホスト名]

もしできなかったら、秘密鍵の設定が悪い?気がするのでconfigを設定しましょう。

.ssh/configに以下を追記します。

Host Mac
  HostName [ローカルホスト名]
  User [ユーザ名]
  IdentityFile ~/.ssh/id_ed25519

最初の行のHost MacのMacの部分は好きな名前(わかりやすい名前)に変えて大丈夫です。

IdentityFileはさっき作った秘密鍵の場所を書きましょう。秘密鍵ファイルの名前は違うかもしれません。

これで、

ssh Mac

とすると、sshできると思います。(Macはさっきつけた名前)

お疲れさまでした。

コメント

タイトルとURLをコピーしました