Slide 1

Slide 1 text

SSHで快適 リモートワーク リモートワーク 吉田

Slide 2

Slide 2 text

さてみなさんリモートワークしてますか • 会社の仕事を家から • 自宅PC作業をカフェから • 実家のPCメンテナンスを自宅から • などなど • などなど • 今回紹介する構成 • 外出先PC->クラウド/自宅サーバ>実家/自宅PC

Slide 3

Slide 3 text

内容 • SSH踏み台設定 • 今まで:最強のSSH踏み台設定 • これから:-J • 温故知新:ワイルドカードマッチ • 温故知新:ワイルドカードマッチ • 自宅、クラウドサーバ活用:autossh • systemd化 • Windowsでの利用

Slide 4

Slide 4 text

踏み台経由のSSHアクセス • 踏み台(gateway、 bastion、step)経由アクセス • sshサーバを順々にアクセスしてもコンソールでア クセスはできますが... • 直接アクセスできると 踏み台 サーバ 配下のPC(非公 開) sshd sshd/ rdpd/vncd etc • 直接アクセスできると • 手間の削減 • ポートフォワード含めセキュリティを高めた上で、さら に便利に! • 秘密鍵を踏み台に置かなくて済む 作業PC(非公開) ssh client rdp/vnc client

Slide 5

Slide 5 text

最強のSSH踏み台設定(以前の方法) .ssh/config: # https://qiita.com/kawaz/items/a0151d3aa2b6f9c4b3b8 Host */* ProxyCommand ssh -W "$(basename "%h")":%p "$(dirname "%h")" #ホスト鍵無条件に受け入れて、ファイルを更新 StrictHostKeyChecking no StrictHostKeyChecking no Host *+* ProxyCommand ssh -W "$(sed -E 's/.*¥+//'<<<"%h")":%p "$(sed -E 's/¥+[^¥+]*//'<<<"%h")" StrictHostKeyChecking no # ssh hoge.com/192.168.x.x #gateway+gatewayから到達できるサーバ # ssh hoge.com+192.168.x.x #gateway/gatewayから到達できるサーバ

Slide 6

Slide 6 text

これから:-J openssh-7.3 以降 # ssh -J hoge.com 192.168.x.x Configなしでやれる! 参考: 参考: https://qiita.com/kawaz/items/a0151d3aa2b6f9c4b3b8

Slide 7

Slide 7 text

温故知新:ワイルドカードマッチ .ssh/config: Host desk01* HostName 192.168.x.x Host desk02* HostName 192.168.x.x ProxyCommand=ssh -W %h:%p sshgateway Match originalhost *-ofwd Match originalhost *-ofwd dynamicForward 8080 LocalForward 65422 localhost:22 $ ssh desk01-ofwd #直接接続 $ ssh desk02-ofwd #外部接続、shellscript 等で順番にtryする等でより省力化、高度化 詳細は実用SSH 第二版 P288 多重マッチ

Slide 8

Slide 8 text

さて • リモート接続用の「SSHのgatewayサーバやVPNサーバなんて (実家や自宅に)準備されてないよ!」 • そんなあなたにautossh • そしてリバースポートフォワード • そしてリバースポートフォワード

Slide 9

Slide 9 text

リバースポートフォワード • 通常のポートフォワード(-L) • (リモート)サーバのポートを(ローカル)マシンに(sshを転送路として使 用して)持ってくる • 例えば、サーバのxrdpやVNCポート(外に公開していない)をローカル マシンに持ってきて、使用する マシンに持ってきて、使用する • リバースポートフォワード(-R) • (ローカル)マシンのポートを(リモート)サーバに持って行く • 例えば、WindowsPCのVNCやリモートデスクトップポートをサーバに 持って行って、サーバに接続してローカルマシンを操作する

Slide 10

Slide 10 text

そんなあなたにautossh • autosshとは • sshクライアントを起動/監視するプログラム • https://packages.debian.org/buster/autossh • リモートのsshサーバに(リバース: -R)ポートフォワード等が可能 • 後述のデフォルト設定はローカルフォワード(-L)なので書き換える • リバースポートフォワードでクラウドサーバをssh踏み台に! クラウドサーバ (グローバルIP) 自宅PC port待受 sshd/rdpd etcへ転送 自宅PC(非公開) 作業PC(非公開) sshd sshd/ rdpd/vncd etc autossh ssh client rdp/vnc client • リバースポートフォワードでクラウドサーバをssh踏み台に! • 使用例 • 実家PC(autossh)から自宅やクラウド上のサーバ(sshd)に接続することによりクラウ ド上実家PCのsshportへ転送するportを作ることができる • sshのみ公開したクラウドサーバを準備できれば、それ以外はNAT下でもOK • セキュリティ • sshdのデフォルトはサーバのlocalloopbackのみ許可(GatewayPorts=no)なので使用 時はクラウドサーバに一旦ssh clientで接続して再度ローカルに接続 (つまり踏み台) • デフォルト(GatewayPorts=no)ではパブリック(0.0.0.0)には公開されない • 御社(ご自宅)のセキュリティ要件はご確認ください! • At your own risk. client

Slide 11

Slide 11 text

さらにautosshをsystemdでサービス化し てssh接続を安定化 • 自宅PCの(再)起動時に自動でautosshを起動 • https://remoteroom.jp/diary/2019-07-18/ • https://gist.github.com/ttimasdf/ef739670ac5d627981c5695 adf4c8f98 adf4c8f98 • 要両サーバのroot • 相互にssh専用ユーザを作成してポートフォワード専用にする • systemd設定 • autosshの死亡時に自動で再開 • 安定性向上!

Slide 12

Slide 12 text

構成 • NAT下にある自宅PC • sshdが動いていること(Cygwin等も可) • sshで自宅サーバに接続できること • rootを持っていること(Windowsでも可) クラウドサーバ (グローバルIP) 実家PC sshdport へ転送 自宅PC(非公開) 作業PC(非公開) sshd sshd autossh ssh client rootを持っていること(Windowsでも可) • インターネットからsshアクセス出来る自宅サーバやクラウド 上のサーバ • sshdが動いていること • rootを持っていること • クラウドサーバにアクセス出来る作業用PC • sshクライアントが動いていること

Slide 13

Slide 13 text

手順(全てLinuxの場合) • systemdひな形取得 • curl -sSL https://gist.githubusercontent.com/ttimasdf/ef739670ac5d627981c5695adf4c8f98/raw/autossh@host1 | ¥ • sudo tee /etc/default/autossh@example • curl -sSL https://gist.githubusercontent.com/ttimasdf/ef739670ac5d627981c5695adf4c8f98/raw/[email protected] | ¥ • sudo tee /etc/systemd/system/[email protected] • 専用ユーザ作成(クラウドサーバ、実家PC両方)、公開鍵作成、ssh接続 • sudo useradd -g nogroup -s /bin/false -m tunnel • sudo -u tunnel mkdir -p ~tunnel/.ssh • sudo -u tunnel nano ~tunnel/.ssh/config • sudo -u tunnel ssh remote.example.com #クラウドサーバ クラウドサーバ (グローバルIP) 自宅PC 自宅PC(非公開) sshd sshd autossh -R • sudo -u tunnel ssh remote.example.com #クラウドサーバ • (設定ファイル名変更:オプション) • cp /etc/default/autossh@example /etc/default/autossh@hoge • 設定変更 • sudo nano /etc/default/autossh@example • /etc/default/autossh@example内の次の2行を編集する • TARGET_HOST=remote.example.com • 接続サーバ(自宅サーバ) • FORWARDS=-R 10022:127.0.0.1:22 • -Rオプション:リバースポートフォワード 、10022(任意:クラウドサーバ側の空ポート番号)、22(自宅PCでの既存sshポート番号) • 接続 • sudo systemctl start [email protected] • 永続化 • sudo systemctl enable [email protected] 自宅PC sshdport へ転送 作業PC(非公開) sshd ssh client -L

Slide 14

Slide 14 text

手順(自宅Windowsの場合) • クラウドサーバ上にsshd,ユーザ準備 • 自宅WinPCにssh/autossh(Cygwin)を導入 • パッケージ有り • Autosshでクラウドサーバ上にリモートデスクトップポートを リバースフォワード(-R) • 同サービス化して自動起動 クラウドサーバ (グローバルIP) 自宅PC sshdport へ転送 自宅Win(非公開) 作業PC(非公開) sshd リモート デスクトップ サービス Cygwin autossh ssh client -R -L • 同サービス化して自動起動 • Cygrunsrv –I AutoSSH –p /usr/bin/autossh –a “-M 20000 -R localaddress:port:serveraddress:port [email protected]” -e AUTOSSH_NTSERVICE=yes • 作業PCからssh接続でリモートデスクトップをポートフォワー ド(-L) • リモートデスクトップでローカルポート接続で実家WinPCに接 続 リモート デスクトップ -L

Slide 15

Slide 15 text

参考URL • 参考URL • 最強のSSH踏み台設定 • https://qiita.com/kawaz/items/a0151d3aa2b6f9c4b3b8 • autossh&systemd • autossh&systemd • https://remoteroom.jp/diary/2019-07-18/ • https://gist.github.com/ttimasdf/ef739670ac5d627981c5695adf4c8f 98 • Creating persistent SSH tunnels in Windows using autossh • https://blog.dhampir.no/content/creating-persistent-ssh-tunnels- in-windows-using-autossh