サーバやパソコンが遠隔にあるとき、手元で操作できるさまざまなやり方があります。
検証
- ・
- 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