🍜

MacからWindowsのPowershellにssh接続する

に公開

ポートの競合を避ける(WSL2でもsshを有効にしている場合のみ)

私の場合、22番ポートはWindows→WSL2のsshで使ってしまっているので、Windows→Powershellは2200を使うことにします。
https://zenn.dev/ramenpanda/articles/e017526f7d68c0

OpenSSHサーバーをインストール・起動

以下の記事を参考に、OpenSSHサーバーをWindowsにインストールします。
https://qiita.com/hiro_nico/items/48d091a7200f2012650b

システム > オプション機能から、OpenSSHサーバーが有効になっていることを確認します。

PowershellでGet-Service sshdを実行し、Runningになっていることを確認します。

Windowsユーザーへのログインをパスワード認証にする(WindowsへのログインがPIN認証かつsshでパスワード認証したい場合のみ

私の場合、使用ユーザーがMicrosofaccountであり、PIN認証だったので、パスワード認証に切り替える必要がありました。
以下のブログを参考にさせていただきました。
https://partition.aomei.jp/password/windows-11-use-password-instead-of-pin-3320-tc.html

sshd_configの設定変更

Windows側のssh設定(sshd_config)を変更します。
sshd_configは管理者でないと変更できないので、管理者アカウントでない場合はPowershellを管理者で開いて、

cd C:\ProgramData\ssh\
notepad .\sshd_config

とかすると編集できます。

  • sshd_config
PasswordAuthentication yes
AllowUsers <Windowsのアカウント名>

<Windowsのアカウント名>はPowershellでwhoamiしたときにでてくる<ドメイン>\<ユーザー名>です。

その後、sshdを再起動し設定を最適用させます。

Restart-Service sshd

macからWindowsにssh接続

ssh -p 2200 <Windowsのアカウント名>@<IPアドレス>

<Windowsのアカウント名>`s password: と聞かれるので、Windowsのアカウントにログインするときのパスワードを入力

Windowsにsshでログインすることができました。

しかし、先ほど使ったsshdのコマンドが使えません。デフォルトのシェルがbashになっているためでした。

そこで、powershell.exeを実行することでPowershellに切り替えてあげます。

これで、MacからWindowsのPowershellにssh接続し、Powershell上でコマンドを実行することができました。

Discussion