Telnet、rsh、rloginはデータが平文で流れる。SSH(Secure Shell)は暗号化して通信するため、こちらが主流です。Red Hat Enterprise Linuxでは標準でインストールされている。
次のコマンドでデフォルトで有効か調べる。
$ sudo systemctl is-active sshd
次のコマンドでSSHサービスの状態を調べる。
$ sudo systemctl status sshd
SSH設定ファイルパスは/etc/ssh/sshd_configです。
ユーザー名cpageに192.168.10.4にWindows11のターミナルから接続する場合です。
$ ssh cpage@192.168.10.4
パスワード:(パスワード)
Windows上でSSHクライアントを有効にするには、[設定]>[アプリ]>[オプション機能]の[機能の表示]をクリックし、「Open SSH クライアント」を追加する。[オプション機能]のところで「OpenSSH クライアント」があればOK。
また、SSHログインするにはパスワードが設定されている必要がある。
さらに、C:\windows\system32\drivers\etc\hostsを編集すればホストからアクセスできるが、これは省略。
Linuxのインストールと設定
Linux側で次を実行する。
$ sudo yum install xorg-x11-xauth xorg-x11-fonts-\* xorg-x11-utils dbus-x11
/etc/ssh/sshd_configファイルにX11Forwardingオプションを有効化する。
X11Forwarding yes
sshdサービスを再起動する。
$ sudo systemctl restart sshd.service
Windowsの処理
Tera Termはすでにインストールされているものとする。
Windows側ではXmingのインストールを行う。
Xming X Server for WindowsのダウンロードページからXming-6-9-0-31-setup.exeとXming-fonts-7-7-0-10-setup.exeをダウンロードしインストールする。
インストールしたプログラムのXLaunchを起動し、[Multiple windows]にチェックし[次へ]、[Start no dient]にチェックし[次へ]、[No Access Control]にチェックし[次へ]、[完了]をクリックしてXmingを起動する。
参考:
Tera Termを起動し、[設定]メニューの[SSH転送]をクリックし、[リモートのアプリケーションをローカルのXサーバに表示する]にチェックを入れて[OK]をクリックする。
[ファイル]メニュー>[新しい接続]をクリックし、TCP/IPにLinuxのTCP(「192.168.10.4」など)を入力し、[OK]をクリックする。[ユーザ名][パスワード]を入力し、[OK]をクリックし、以後コマンドを入力する。(パスワード入力は省略する)
$ export DISPLAY=192.168.10.5:0.0
あとはsudo付きコマンドでLinuxアプリを起動する。
$ sudo nautilus
※PowerShellなどから起動するには以下のようにする。
> ssh -X -Y cpage@192.168.10.4
$ export DISPLAY=192.168.10.5:0.0
$ sudo nautilus
例として、nautilusは「ファイル」、geditは端末、firefoxはウェブブラウザを開く。
参考:
5.4.2. X11 転送を使用したリモートでのアプリケーションの起動
アプリケーション実行時(sudo nautilusなど)のエラー例
以下はIPアドレスが間違っている。
(org.gnome.Nautilus:xxxx): Gtk-WARNING **: xx:xx:xx.xxx: cannot open display: 192.168.5.x:0.0
以下はsudoが必要である。Linux(x window system上はクライアント)側では起動している。
(org.gnome.Nautilus:xxxx): dbind-WARNING **: xx:xx:xx.xxx: Couldn't register with accessibility bus: Did not receive a replay. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the replay, the replay timeout expired, or the network connection was broken.