Table of Contents
1 XRDPをインストールする
Fedora 25のsrc.rpmを利用します。
> sudo zypper -n in rpm-build patterns-openSUSE-devel_basis> FEDORA=https://dl.fedoraproject.org/pub/fedora/linux/releases> wget -q ${FEDORA}/25/Everything/source/tree/Packages/x/xrdp-0.9.0-6.fc25.src.rpm> rpm -i xrdp-0.9.0-6.fc25.src.rpm
pamの設定ファイルをxrdp-0.6のものに変更します。
> cd ~/rpmbuild> cat <<EOF > SOURCES/xrdp-sesman.pamd#%PAM-1.0auth required pam_unix.so shadow nullokauth required pam_env.so readenv=1account required pam_unix.soEOF
Fedora 25でのパッケージ名をOpenSUSE 13のものに変更します。
> sed -i -e ‘s/BuildRequires: systemd-units/BuildRequires: systemd/g’ -e ‘s/Requires(.*): systemd-units/Requires1: systemd/g’ -e ‘s/Requires(post): systemd-sysv/Requires(post): systemd/g’ -e ‘s/BuildRequires: openssl-devel/BuildRequires: libopenssl-devel/g’ -e ‘s/Requires: tigervnc-server-minimal/Requires: tigervnc/g’ -e ‘s/^%systemd_post (.*)/systemctl enable 1nsystemctl start 1/g’ -e ‘s/^%systemd_preun (.*)/systemctl stop 1/g’ -e ‘s/^%systemd_postun_with_restart (.*)/systemctl disable 1/g’ SPECS/xrdp.spec
/etc/X11/xim.d/ibusがないと接続ができないようなので、ibusをRequireに追加します。
> sed -i -e ‘s/Requires: tigervnc/Requires: tigervncnRequires: ibus/g’ SPECS/xrdp.spec
BuildRequireのパッケージをインストールします。
> sudo zypper -n in $(grep ‘^BuildRequires:’ SPECS/xrdp.spec | awk -F: ‘{ print $2 }’)
XRDPをビルドしてインストールします。
> rpmbuild -ba SPECS/xrdp.spec> sudo zypper -n in RPMS/x86_64/xrdp-0.9.0-6.x86_64.rpm
3389/tcpを開放します。
> firewall_open_tcp(){ for t in FW_SERVICES_EXT_TCP FW_SERVICES_DMZ_TCP FW_SERVICES_INT_TCP; do sudo sed -e “s/^${t}=”(.*)”/${t}=”1 $1″/g” -i /etc/sysconfig/SuSEfirewall2 done sudo systemctl restart SuSEfirewall2}> firewall_open_tcp 3389
RDP接続できるようになります。
2 GNOMEの場合はxdmが必要
DISPLAYMANAGERがgdmだと以下のようにエラーになります。/etc/gdmの設定がXRDPに合っていないのかもしれません。
DISPLAYMANAGERをgdmからxdmに変更すると改善されます。以下の変更を加えた後、OpenSUSE 13を一度再起動します。
> diff -uprN /etc/sysconfig/displaymanager{.org,}— /etc/sysconfig/displaymanager.org 2016-12-24 07:02:46.771923000 +0900+++ /etc/sysconfig/displaymanager 2016-12-24 06:57:28.966895000 +0900@@ -11,7 +11,7 @@ DISPLAYMANAGER_XSERVER=”Xorg” # Here you can set the default Display manager (kdm/xdm/gdm/wdm/entrance/console). # all changes in this file require a restart of the displaymanager #-DISPLAYMANAGER=”gdm”+DISPLAYMANAGER=”xdm” ## Type: yesno ## Default: no
ローカルのログイン画面は以下の通りです。この状態でXRDP経由でアクセスすることができるようになります。なお、XRDPでログインしている間はローカルでログインできなくなります。
3 XRDPをインストールするスクリプト
以下のスクリプトを実行すればOpenSUSE 13へRDP接続できます。
#!/bin/shfirewall_open_tcp(){ for t in FW_SERVICES_EXT_TCP FW_SERVICES_DMZ_TCP FW_SERVICES_INT_TCP; do sudo sed -e “s/^${t}=”(.*)”/${t}=”1 $1″/g” -i /etc/sysconfig/SuSEfirewall2 done sudo systemctl restart SuSEfirewall2}sudo zypper -n in rpm-build patterns-openSUSE-devel_basisFEDORA=https://dl.fedoraproject.org/pub/fedora/linux/releaseswget -q ${FEDORA}/25/Everything/source/tree/Packages/x/xrdp-0.9.0-6.fc25.src.rpmrpm -i xrdp-0.9.0-6.fc25.src.rpmcd ~/rpmbuildcat <<EOF > SOURCES/xrdp-sesman.pamd#%PAM-1.0auth required pam_unix.so shadow nullokauth required pam_env.so readenv=1account required pam_unix.soEOFsed -i -e ‘s/BuildRequires: systemd-units/BuildRequires: systemd/g’ -e ‘s/Requires(.*): systemd-units/Requires1: systemd/g’ -e ‘s/Requires(post): systemd-sysv/Requires(post): systemd/g’ -e ‘s/BuildRequires: openssl-devel/BuildRequires: libopenssl-devel/g’ -e ‘s/Requires: tigervnc-server-minimal/Requires: tigervnc/g’ -e ‘s/^%systemd_post (.*)/systemctl enable 1nsystemctl start 1/g’ -e ‘s/^%systemd_preun (.*)/systemctl stop 1/g’ -e ‘s/^%systemd_postun_with_restart (.*)/systemctl disable 1/g’ SPECS/xrdp.specsed -i -e ‘s/Requires: tigervnc/Requires: tigervncnRequires: ibus/g’ SPECS/xrdp.specsudo zypper -n in $(grep ‘^BuildRequires:’ SPECS/xrdp.spec | awk -F: ‘{ print $2 }’)rpmbuild -ba SPECS/xrdp.specsudo zypper -n in RPMS/x86_64/xrdp-0.9.0-6.x86_64.rpmfirewall_open_tcp 3389grep ‘DISPLAYMANAGER=”gdm”‘ /etc/sysconfig/displaymanager && (sudo sed -i -e ‘s/DISPLAYMANAGER=”gdm”/DISPLAYMANAGER=”xdm”/g’ /etc/sysconfig/displaymanager && sudo reboot)