はじめに
Windows(WSLも含む)またはmacOSからUbuntu22.04へSSH接続する方法について解説します。以下の4つの方法について解説します。
- CUIでSSH接続する方法
- VSCodeを使用してSSH接続する方法
- パスワードなしでSSH接続する方法(CUIとVSCode)
- X11アプリケーションを表示する方法(CUIとVSCode)
共通
-
サーバPCのIPアドレスを確認する
サーバ(Ubuntu 22.04)で以下のコマンドをターミナルから実行し、IPアドレスを調べます。ip a
-
リモートログインの有効化
サーバPCで「設定」→「共有」→「リモートログイン」をONにします。 -
OpenSSHのインストール
OpenSSHをインストールします。システムを最新の状態にし、OpenSSHをインストールしてください。sudo apt update && sudo apt upgrade sudo apt install openssh-server
インストールが完了したら、OpenSSHを有効にします。
次のコマンドを実行してください。sudo systemctl enable --now ssh
CUIでSSH接続する方法
- クライアントPCでターミナルを開きます。
- 以下のコマンドを実行して、サーバPCへ接続します。
ssh USER_NAME@IP_ADDRESS
-
USER_NAME
:サーバのユーザー名 -
IP_ADDRESS
:サーバのIPアドレス
-
- Ubuntuのアカウントパスワードを入力してログインします。
VSCodeを使用した方法
準備
-
拡張機能のインストール
VSCodeに「Remote - SSH」拡張機能をインストールします。 -
SSH設定ファイルの編集
-
Ctrl+Shift+P
を押してコマンドパレットを開きます。 -
「Remote-SSH: SSH 構成ファイルを開く」を選択します。
-
configファイルに以下の設定を追加します。
Host 任意のホスト名 HostName IP_ADDRESS User USER_NAME
-
接続手順
パスワード無しで接続する方法
SSH鍵を利用することで、毎回パスワードを入力する手間を省くことができます。
SSH鍵の作成
-
クライアントPCで以下のコマンドを実行します。
ssh-keygen -t rsa -b 4096 -C "your-email@example.com"
-
公開鍵(
id_rsa.pub
)をサーバに登録します。
公開鍵の登録方法
-
方法1(Windows&WSL&macOS)
以下のコマンドを順に実行します。
scp ~/.ssh/id_rsa.pub USER_NAME@IP_ADDRESS:~/ ssh USER_NAME@IP_ADDRESS mkdir -p ~/.ssh cat id_rsa.pub >> ~/.ssh/authorized_keys rm ~/id_rsa.pub
-
方法2(WSL&macOS)
ssh-copy-id -i ~/.ssh/id_rsa.pub USER_NAME@IP_ADDRESS
設定が完了したら以下のコマンドでパスワード無しで接続できるか確認します。
ssh USER_NAME@IP_ADDRESS
※Remote - SSH拡張機能はWindowsのsshを使用しています。そのため、WSLの公開鍵をサーバーにコピーしても、VSCodeのRemote - SSH拡張機には反映されないことに注意してください。
X11アプリケーションを表示する方法(-XYオプション)
X11アプリケーションを表示する方法について解説します。
WindowsからUbuntu 22.04のX11アプリケーション(GUI)を表示するには、SSH接続時に-X
または-Y
オプションを使用します。以下に手順を説明します。
前提条件
クライアント側の準備
Windows上でX11サーバ(例:XmingやVcXsrv)をインストールし、起動しておきます。 macOSの場合はXQuartzでできます。
CUIでの接続方法
- 方法1(Windows&macOS)
-
ターミナルを開きます。
-
-X
または-Y
オプションを付けてSSH接続します。ssh -X USER_NAME@IP_ADDRESS
-
-X
:X11転送を有効にします。 -
-Y
:信頼済みのX11転送を有効にします。(セキュリティのリスクが低い環境で推奨)
-
-
接続後DISPLAYの設定をします。(クライアント側のIPアドレスであることに注意してください)
export DISPLAY=CLIENT_IP_ADDRESS:0.0
-
X11アプリケーションを起動します。例として、
xclock
を実行します。xclock
-
正常に動作していれば、クライアント側の画面にアプリケーションのウィンドウが表示されます。
- 方法2(WSL)
-
-X
または-Y
オプションを付けてSSH接続します。ssh -X USER_NAME@IP_ADDRESS
- X11アプリケーションを起動します。例として、
xclock
を実行します。xclock
- 正常に動作していれば、Windowsの画面にアプリケーションのウィンドウが表示されます。
VSCodeでの使用方法
VSCodeのRemote - SSHでX11転送を有効にするには、SSH構成ファイルに以下を追加します。
-
config
ファイルを編集します。Host 任意のホスト名 HostName IP_ADDRESS User USER_NAME ForwardX11 yes ForwardX11Trusted yes
-
Remote - SSHで接続します。
-
ターミナルでX11アプリケーションを起動します(例:
xclock
)。
※Remote - SSH拡張機能はWindowsのsshを使用しています。そのため、WSLの公開鍵をサーバーにコピーしても、VSCodeのRemote - SSH拡張機には反映されないことに注意してください。
この設定により、Windows上でUbuntuサーバのGUIアプリケーションを表示できるようになります。
注意事項
-
SSH機能の対応バージョン
VScodeのSSH接続はx86_64であればUbuntu 16.04以降、AArch64であればUbuntu18.04以降でサポートされています(2024年12月時点)。 -
XサーバでGUI表示する際macOSだと表示できないアプリケーションがある
ParaviewやRvizの表示をすると、以下のようなエラーを吐き表示できませんでした。2.7.8にダウングレードすれば動くとありました。しかしこれを行うと、そもそもSSH接続ができなくなりました。2016年と情報が古い情報だったので、他の依存ソフトの影響で対処できなくなったのかもしれません。もし、解決方法があれば更新します。libGL error: No matching fbConfigs or visuals found libGL error: failed to load driver: swrast
参考資料
- Visual Studio Code で Remote SSH する。#VSCode - Qiita
- 研究室などの Ubuntu Desktop を複数ユーザで使う。#Ubuntu22.04 - Qiita
- Remote - SSH