LoginSignup
11
3

More than 1 year has passed since last update.

MacからWindowsにSSH接続する

Last updated at Posted at 2022-07-02

皆さんこんにちは

ゼミの卒業研究(ディープラーニング、自然言語処理)のために、研究室にあるGPUを積んだPCにつなぎたいと考えかなり奮闘しました。

AWSのEC2インスタンスへのSSH接続の経験はあるのですが、実際のPCにSSH接続をするのは初めてだったため、備忘録も兼ねて記事にしたいと思います。

実行環境

  • サーバーOS:Windows10 Home
  • クライアントOS:M1 MacOS Monterey(12.4)

手順

サーバー(Windows)側の作業: S
クライアント(Mac)側の作業: C

  1. WSLのインストール(S)
  2. OenSSHのインストールおよび設定(S)
  3. sshd_configの編集(S)
  4. SSH鍵の作成(C)
  5. 公開鍵の登録(S)
  6. SSH接続(C)

作業

基本的にPowerShellを開くときは「管理者として実行する」を選択してください。

WSLのインストール(S)

PowerShellを管理者として実行し以下のコマンドを実行する。

wls --update
wsl --set-default-version 2
wsl --install -d Ubuntu

するとUbuntuの画面が起動され新しくユーザー名とパスワードが要求されますので入力してください。

Enter new UNIX username: ユーザー名
New password: パスワード
Retype new password: もう一度パスワードを入力

ここで入力したユーザー名とパスワードはSSH接続時に必要なるため、各自メモしておいてください。

OenSSHのインストールおよび設定(S)

OpenSSH サーバー

Windows+Sを押して、「オプション機能を追加する」と検索する。

「機能の追加」から「OpenSSH サーバー」をインストールする。
ただし、既にインストールされている場合はこの作業は行わなくて良い。

OpenSSH 設定

PowerShellを管理者として実行する。

SSH接続時にデフォルトのターミナルをBashに変更する。

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\bash.exe" -PropertyType String -Force

Firewallのポートを開放。

netsh advfirewall firewall add rule name="sshd" dir=in action=allow protocol=TCP localport=22

PC起動時にOpenSSHサーバーが自動で起動するに設定する。
これを行わないとPCを起動するたびにOpenSSHを起動するコマンドを打たなければならない。

Set-Service sshd -StartupType Automatic

ここで一度PCを再起動しましょう。
再起動したら、PowerShellを管理者として実行しOpenSSHの起動状態を確認。

Get-Service sshd

Status    Name    Displayname
------    ----    -----------
Running   sshd    OpenSSH SSH Server

StatusRunning状態ならOKです。

sshd_configの編集(S)

C:\ProgramData\ssh\sshd_configをエディタで開き、以下の2箇所を修正する。
ProgramDataが表示されない場合は隠しファイル表示の設定を変更してください。(https://androidlover.net/android-emulator/bluestacks/windows-hidden-programdata-folder-appear.html)

- # PasswordAuthentication no
+ PasswordAuthentication yes
- Match Group administrators
-        AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
+ # Match Group administrators
+ #        AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

SSH鍵の作成(C)

今度はクライアント側に戻りSSH鍵の作成を行います。

ssh-keygen -t rsa -b 4096 -o -a 100 -f ~/.ssh/example

パスフレーズが要求されるので忘れないようなフレーズを入力してください。
今回のSSH接続では特に使いません。

すると、~/.sshディレクトリにexample.pubexampleファイルが作成されます。
exampleの名前を変えたい方は、SSH鍵作成コマンドの-f ~/.ssh/exampleを変更してください。

公開鍵の登録(S)

上で作成したexample.pub(公開鍵)をC:\Users\{user_name}\.sshに作成し、example.pubauthorized_keysに名前を変更する(拡張子なし)。

以上でSSH接続するための設定は完了です。

SSH接続(C)

最後にSSHの接続を行います。

そのために、まずはサーバー側のIPアドレスを取得しましょう。

PowerShellを開きipconfigを実行。

ipconfig

そして、IPv4がSSH接続するIPアドレスになります。

ssh -i ~/.ssh/example ubuntuのユーザー名@ipアドレス

パスワードが要求されるのでUbuntuのパスワードを入力しましょう。

SSH接続ができない

SSH接続ができない場合、ネットワーク(パブリックネットワーク)のファイアウォールをオフにして試してみてください。(https://onl.sc/Ftj2S6c)

それでもできない場合はセキュリティソフトが許可していない、もしくはどこかの設定がミスってます。

特に会社のPCに接続するとなると、セキュリティソフトが許可していない場合が多いので、そのときは諦めましょう。

接続先でVSCodeを開きたい

SSH接続したはいいものの、実際に作業するとなったらエディタを使用して作業したいですよね。

その時はVSCodeの拡張機能を使って作業できるので、以下の記事を参考にしてやってみてください。

いつでもSSH接続したい

SSH接続するときはサーバー側の電源がON、もしくはスリープ状態でないことが条件です。

ですので、サーバー側がスリープ状態に入らないように設定すればOKです。

以下の記事を参考に設定を行ってください。

最後に

いかがだったでしょうか?

MacからWindowsにSSHでつなぐリソースがかなり少なかったため、このように記事にしました。

初めはMacからWindowsにつなぐとか絶対めんどいやん。。。とか思ってたんですけど、多分Windows間でSSH接続するほうがもっと大変だろうなと感じました。

何はともあれできてよかったです。

ご不明等あれば遠慮なくコメントの方にてお知らせください。

Thank you for reading

参考文献

11
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
3