Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SSHで快適リモートワーク
Search
koedoyoshida
October 25, 2023
Technology
490
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SSHで快適リモートワーク
koedoyoshida
October 25, 2023
More Decks by koedoyoshida
See All by koedoyoshida
AlmaLinuxの最新動向と、企業の多種多様なLinux環境を保護する「安心サポート」活用術
koedoyoshida
0
55
AlmaLinux国内、日本語サポートについて
koedoyoshida
0
200
OSC仙台プレ勉強会 AlmaLinuxとは
koedoyoshida
0
310
AlmaLinuxのセキュリティ機能評価と認証~FIPS140 3認証、CC認証 取得への取り組み~
koedoyoshida
0
110
AlmaLinux + KVM + Cockpit で始めるお手軽仮想化基盤 ~ 開発環境などでの利用を想定して ~
koedoyoshida
1
1.3k
DebConf25参加報告
koedoyoshida
0
64
AlmaLinux Users Meetup 2025 Summer / AlmaLinuxの活動
koedoyoshida
0
210
CentOS後継!業務システムで使えるAlmaLinux for Enterprise
koedoyoshida
0
330
AlmaLinux Users Meetup 2025 Summer / サイバートラストのAlmaLinuxへの取り組み
koedoyoshida
0
210
Other Decks in Technology
See All in Technology
AI 駆動 Terraform 開発/SRE_BizReach_MIXI_2
visional_engineering_and_design
0
290
Level Up Your CDK DX: 5 Tools I’ve Been Building
gotok365
2
190
Genie Code ワークショップ 基礎編 / Genie-Code-Workshop-fundamental
databricksjapan
PRO
0
350
AIエージェントを雇う前に決める5つのこと
knishioka
1
160
PM領域でのAI Agentの活用
lycorptech_jp
PRO
0
270
KPIだけでは評価できないプロダクトが考えるべき Evalsという第二の評価系 / Beyond KPIs: Evals as a Second Evaluation Framework for Products #PdEConf
aki_iinuma
4
3.6k
[DroidKaigi 2026] Making UI specifications visible: Android UI development in the AI agent era supported by Compose Screenshot Testing and galleries
syarihu
0
570
Jetpack Compose で挑む新聞紙面UI ─ 複合ジェスチャー・ポリゴン記事領域・適応的ページ構成という3つの壁/droidkaigi2026
nikkei_engineer_recruiting
0
190
なぜSRE・セキュリティは評価されないのか?守りの組織を事業成長エンジンに変えた実践
cscengineer
PRO
3
2.2k
プロダクトエンジニアに必要な「いい感じ」に作る能力 〜たくさん作れる時代に、どこまで作るかの決め方〜
jnishime_dresscode
2
1.4k
現場に行くだけでは足りない——プロダクトエンジニアが業務の流れを捉える観点と、その鍛え方
takumiengineering
0
280
【Oracle AI Spotlight ウェビナー】AWSか、Azureか、Google Cloudか。その議論にオラクルを含める意義。
oracle4engineer
PRO
2
230
Featured
See All Featured
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
390
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
260
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
The Curious Case for Waylosing
cassininazir
1
490
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
4
570
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
Side Projects
sachag
455
43k
How GitHub (no longer) Works
holman
316
150k
Balancing Empowerment & Direction
lara
6
1.3k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
The SEO Collaboration Effect
kristinabergwall1
1
550
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
290
Transcript
SSHで快適 リモートワーク リモートワーク 吉田
さてみなさんリモートワークしてますか • 会社の仕事を家から • 自宅PC作業をカフェから • 実家のPCメンテナンスを自宅から • などなど •
などなど • 今回紹介する構成 • 外出先PC->クラウド/自宅サーバ>実家/自宅PC
内容 • SSH踏み台設定 • 今まで:最強のSSH踏み台設定 • これから:-J • 温故知新:ワイルドカードマッチ •
温故知新:ワイルドカードマッチ • 自宅、クラウドサーバ活用:autossh • systemd化 • Windowsでの利用
踏み台経由のSSHアクセス • 踏み台(gateway、 bastion、step)経由アクセス • sshサーバを順々にアクセスしてもコンソールでア クセスはできますが... • 直接アクセスできると 踏み台
サーバ 配下のPC(非公 開) sshd sshd/ rdpd/vncd etc • 直接アクセスできると • 手間の削減 • ポートフォワード含めセキュリティを高めた上で、さら に便利に! • 秘密鍵を踏み台に置かなくて済む 作業PC(非公開) ssh client rdp/vnc client
最強の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から到達できるサーバ
これから:-J openssh-7.3 以降 # ssh -J hoge.com 192.168.x.x Configなしでやれる! 参考:
参考: https://qiita.com/kawaz/items/a0151d3aa2b6f9c4b3b8
温故知新:ワイルドカードマッチ .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 多重マッチ
さて • リモート接続用の「SSHのgatewayサーバやVPNサーバなんて (実家や自宅に)準備されてないよ!」 • そんなあなたにautossh • そしてリバースポートフォワード • そしてリバースポートフォワード
リバースポートフォワード • 通常のポートフォワード(-L) • (リモート)サーバのポートを(ローカル)マシンに(sshを転送路として使 用して)持ってくる • 例えば、サーバのxrdpやVNCポート(外に公開していない)をローカル マシンに持ってきて、使用する マシンに持ってきて、使用する
• リバースポートフォワード(-R) • (ローカル)マシンのポートを(リモート)サーバに持って行く • 例えば、WindowsPCのVNCやリモートデスクトップポートをサーバに 持って行って、サーバに接続してローカルマシンを操作する
そんなあなたに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
さらにautosshをsystemdでサービス化し てssh接続を安定化 • 自宅PCの(再)起動時に自動でautosshを起動 • https://remoteroom.jp/diary/2019-07-18/ • https://gist.github.com/ttimasdf/ef739670ac5d627981c5695 adf4c8f98 adf4c8f98
• 要両サーバのroot • 相互にssh専用ユーザを作成してポートフォワード専用にする • systemd設定 • autosshの死亡時に自動で再開 • 安定性向上!
構成 • NAT下にある自宅PC • sshdが動いていること(Cygwin等も可) • sshで自宅サーバに接続できること • rootを持っていること(Windowsでも可) クラウドサーバ
(グローバルIP) 実家PC sshdport へ転送 自宅PC(非公開) 作業PC(非公開) sshd sshd autossh ssh client rootを持っていること(Windowsでも可) • インターネットからsshアクセス出来る自宅サーバやクラウド 上のサーバ • sshdが動いていること • rootを持っていること • クラウドサーバにアクセス出来る作業用PC • sshクライアントが動いていること
手順(全て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
手順(自宅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
参考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