MkItYs

MkItYs > ネットワークとサーバを作る > 

images

サーバやパソコンを遠隔から操作する[準備中]:CLI (SSH) , GUI (VNC, RDP) , GUI/Window (X Window System (X.Org), Wayland (Mutter))

images

- 2022.10.14

サーバやパソコンが遠隔にあるとき、手元で操作できるさまざまなやり方があります。

検証


OS:Ubuntu 22.04
リモートデスクトップ(送信側):xrdp

概要:CLI (SSH)


ターミナルから利用する遠隔操作のコマンドに、「ssh 」があります。

リモートホストへの接続は次のようになりますが:

$ ssh ${remote_user}@${remote_host}

リモートホストで実行するコマンドを引数にしたり、それらの入力や出力をパイプラインでつなぐこともできます:

$ ssh ${remote_user}@${remote_host} ${command} # リモートホストのコマンドを実行する
$ ${command} | ssh ${remote_user}@${remote_host} ${command} # ほかのコマンドの出力を、リモートホストのコマンドに渡す
$ ssh ${remote_user}@${remote_host} ${command} | ${command} # リモートホストのコマンドの出力を、ほかのコマンドに渡す

リモートホストとの間に仲介ノード(踏み台)があっても、透過的にアクセスできます(仲介ノードが多段でも、つなげられます):

$ ssh -o ProxyCommand="ssh -W %h:%p ${user_proxy}@${server_proxy}" ${user_remote}@${server_remote} # 仲介ノードを介して、リモートホストにつなぐ
$ ssh -o ProxyCommand="ssh -o ProxyCommand='ssh -W ${server_proxy_2}:${port} ${user_proxy}@${server_proxy}' -W ${server_remote}:${port} ${user_proxy_2}@${server_proxy_2}" ${user_remote}@${server_remote} $ 多段の仲介ノードを超える

リモートホストのポートを、ローカルのポートにつなぐことで、仲介ノードを介したリモートホストへの接続もできます:

$ ssh -L ${port_local}:${server_remote}:${port_remote} ${user_proxy}@${server_proxy} # 仲介ノードを介して、リモートホストのポートを、ローカルのポートにつなぐ

ローカルのXサーバから、リモートホストのXクライアントにつなぐための、「Xフォワーディング」という方式も提供しています:

$ ssh -X ${remote_user}@${remote_host}

概要[準備中]:GUI (VNC)


概要:GUI (RDP) , Linux (Ubuntu 22.04)


最新版(Ubuntu 22.04)では、遠隔のGUIを手元であつかうのにRDPが使えますが、環境により次の違いがあります:[※1]

既定の環境:gnome-remote-desktop-daemon
接続時、GUIにログインしておく必要がある
つねに遠隔から使う場合は、[1]ログアウトしない設定、および[2]自動ログインの設定が必要(ただし自動ログインは、マシンを再起動するとRDP向けのパスワードが変更される……)
代替の環境:xrdp
接続時、GUIからはログアウトしておく必要がある
ログインしたまま、遠隔からしか操作できないときの対応:強制的にセッションを切る:

なお、xrdpを設置するには:

$ apt install xrdp

強制的に、自分のGUIのセッションを切るには:

$ gnome-session-quit --no-prompt

※1
既定の環境は、マシンにログインしていることが前提なので(遠隔からのサポートなどを想定している?)、マシンが遠隔にあってRDPを使いたい場合は、代替の環境の方が無難かもしれません。

概要:GUI/Window (X Window System)


高機能のウィンドウシステム:X Window System (XQuartz) , Docker, OpenGL, Tcl/Tk, Xvfb, x11vnc

概要[準備中]:GUI/Window (Wayland)