3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SSHでリモートログインした時に、接続元のXサーバーを使うように設定する

Last updated at Posted at 2023-01-24

What's?

ふだん、Windows+Linux(VM)を使っているのですが、SSHでLinux側に入った時にGUIをWindows側に表示したいなということで。

接続元のOSにXサーバーを立てて、LinuxにSSHでログインした際にDISPLAY環境変数等を設定するようにしてみます。

環境(参考)

  • 接続元OS: Windows 10
    • Xサーバー: VcXsrv X Server 1.20.14.0
  • 接続先OS: Ubuntu Linux 22.04 LTS

設定

.bashrcに、以下のように記述しました。

.bashrc
if [ -n "$SSH_CONNECTION" ] ; then
  export DISPLAY=$(echo $SSH_CONNECTION | awk '{print $1}'):0.0
  export GTK_IM_MODULE=ibus
  export XMODIFIERS='@im=ibus'
  export QT_IM_MODULE=ibus
  export NO_AT_BRIDGE=1
  xset -r 49
  if test $(ps auxw | grep $USER | grep -v grep | grep "ibus-daemon -d -x" 2> /dev/null | wc -l) -eq 0; then
    ibus-daemon -d -x &
  fi
  alias gnome-terminal='dbus-launch gnome-terminal'
fi

SSH_CONNECTION環境変数が設定されていた場合は、SSHでのログインになるのでこれを利用します。
また、ログイン元のIPアドレスもSSH_CONNECTION環境変数に含まれています。

  export DISPLAY=$(echo $SSH_CONNECTION | awk '{print $1}'):0.0

このあたりは、日本語入力の設定です。

  export GTK_IM_MODULE=ibus
  export XMODIFIERS='@im=ibus'
  export QT_IM_MODULE=ibus
  export NO_AT_BRIDGE=1
  xset -r 49
  if test $(ps auxw | grep $USER | grep -v grep | grep "ibus-daemon -d -x" 2> /dev/null | wc -l) -eq 0; then
    ibus-daemon -d -x &
  fi

この状態にすると、接続元にXサーバーを起動していないとSSHログイン時に応答待ちになってしまうので、その点には注意が必要です。

3
5
2

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
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?