リモートデスクトップ接続したいだけなのにわざわざVPNを繋ぎたくない
リモートデスクトップ接続したいだけなのにわざわざVPNを繋ぎたくない
を動機にして、sshトンネルを利用してRDP接続してみた
環境
[Ubuntu PC]−(インターネット)→[Ubuntu Server]→[Windows PC]
設定メモ
Ubuntu Server側の設定(その1)
- openssh-serverのインストール
┌─╼ administrator@gatekeeper : [~]
└────╼ [ssh] $ sudo apt install openssh-server
Ubuntu PC側の設定(その1)
- 認証鍵の生成
┌─╼ | up 17 days, 3:25, 0 users | [~]
└────╼ $ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/administrator/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/administrator/.ssh/id_rsa
Your public key has been saved in /home/administrator/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:4zSR4vvXaVogzA54V3eTGtM2gXpq63/ZnkFoN4Dql98 administrator@lenovo
The key's randomart image is:
+---[RSA 4096]----+
| .. |
| . o. o |
| . o .o+.B |
| o + oo..*oo |
| . + S..o.o + |
| . B.+o.o o .|
| . oo =.. + |
| . +.= + +|
| .oo+.o E.|
+----[SHA256]-----+
- 生成した鍵をUbuntu Serverへ転送する
┌─╼ | up 17 days, 3:28, 0 users | [~]
└────╼ $ ssh-copy-id -i ~/.ssh/id_rsa.pub administrator@gatekeeper
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/administrator/.ssh/id_rsa.pub"
The authenticity of host 'gatekeeper (*.*.*.*)' can't be established.
ECDSA key fingerprint is SHA256:ZfTcNolCYmEZ+YK/JZZ3HirCMhQo5WWaDg2YaVT8uJM.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'administrator@gatekeeper'"
and check to make sure that only the key(s) you wanted were added.
Ubuntu Server側の設定(その2)
- 必要な認証鍵の転送が終わったら、パスワード認証での接続を無効化する
┌─╼ administrator@gatekeeper : [~]
└────╼ [ssh] $ sudo nano /etc/ssh/sshd_config
PasswordAuthentication no
- ついでにrootのログインも無効にしておくとベター
PermitRootLogin no
sshd_config
を書き換えたらsshサーバーを再起動する
┌─╼ administrator@gatekeeper : [~]
└────╼ [ssh] $ sudo systemctl restart sshd
2つ目以降の認証鍵は、USBメモリなどに生成されたid_rsa.pub
をコピーして、既に設定済みの端末から該当のアカウントの.ssh/authorized_keys
ファイルに追記するようにします
パスワード認証も無効にしないでおけば都度scp
コマンドで転送したり、ssh
コマンドで接続してコピペもできるのでしょうが、どれだけ複雑なパスワードを設定していたとしても外向きに公開しているサーバーでパスワード認証を使えるようにしたままにしておくのは絶対に止めましょう
- 2つ目以降の接続アカウントを作成する
┌─╼ administrator@gatekeeper : [~]
└────╼ [ssh] $ sudo groupadd -f RASUsers
オプション | 意味 |
---|---|
-g | グループが既に存在していた場合はエラーにならず終了する |
┌─╼ administrator@gatekeeper : [~]
└────╼ [ssh] $ sudo useradd -m -N -g RASUsers -s /bin/false staff01
オプション | 意味 |
---|---|
-m | ユーザーのホームディレクトリが存在しない場合に作成する |
-N | ユーザーと同じ名前のグループを作成しない |
-g | ユーザーが属するプライマリグループを指定する |
-s | ユーザーのログインシェルをフルパスで指定する |
- 作成したアカウントのホームディレクトリに
.ssh
ディレクトリを作成する
┌─╼ administrator@gatekeeper : [~]
└────╼ [ssh] $ sudo mkdir /home/staff01/.ssh
┌─╼ administrator@gatekeeper : [~]
└────╼ [ssh] $ sudo touch /home/staff01/.ssh/authorized_keys
┌─╼ administrator@gatekeeper : [~]
└────╼ [ssh] $ sudo chown -R staff01:RASUsers /home/staff01/.ssh
┌─╼ administrator@gatekeeper : [~]
└────╼ [ssh] $ sudo chmod 700 /home/staff01/.ssh
┌─╼ administrator@gatekeeper : [~]
└────╼ [ssh] $ sudo chmod 600 /home/staff01/.ssh/authorized_keys
適切なアクセス権が設定されていないとPermission denied
で接続できません
Ubuntu PC側の設定(その2)
- 接続テスト
┌─╼ | up 17 days, 3:45, 0 users | [~/.ssh]
└────╼ $ ssh administrator@gatekeeper
- RDPクライアントのインストール
┌─╼ | up 17 days, 3:52, 0 users | [~]
└────╼ $ sudo apt -y install freerdp2-x11
[sudo] password for administrator:
- sshトンネルを経由してWindows PCにRDP接続する
┌─╼ | up 17 days, 3:55, 0 users | [~]
└────╼ $ nano RDPviaSSH.sh
#!/bin/bash
TunnelCMD="ssh -N -L 13389:172.29.100.253:3389 administrator@gatekeeper"
#Establish SSHTunnel
pgrep -f -x "$TunnelCMD" > /dev/null 2>&1 || $TunnelCMD &
sleep 1
# Connect RDPSession
xfreerdp /v:localhost:13389 /sound /sound:sys:alsa /clipboard /w:1440 /h:1050 /audio-mode:0 /u:user /p:Password1! /floatbar:show:always
#Purge SSHTunnel
PID=`pgrep -f -x "$TunnelCMD"`
kill "$PID"
これでRDPするためだけにわざわざVPNを繋がなくてよくなりました
竹内電設は、大阪府下を中心に中小規模の組織がITシステムを効果的に活用するための、お手伝いをさせていただいております
© 2023 竹内電設; all rights reserved.