<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Cloudflare Ssh on Joonlog</title><link>https://joonlog.github.io/tags/cloudflare-ssh/</link><description>Recent content in Cloudflare Ssh on Joonlog</description><generator>Hugo -- gohugo.io</generator><language>ko-kr</language><lastBuildDate>Mon, 20 Apr 2026 09:00:00 +0900</lastBuildDate><atom:link href="https://joonlog.github.io/tags/cloudflare-ssh/index.xml" rel="self" type="application/rss+xml"/><item><title>Cloudflare를 사용한 서버 SSH 접근</title><link>https://joonlog.github.io/p/cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84-ssh-%EC%A0%91%EA%B7%BC/</link><pubDate>Mon, 20 Apr 2026 09:00:00 +0900</pubDate><guid>https://joonlog.github.io/p/cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84-ssh-%EC%A0%91%EA%B7%BC/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Cloudflare Tunnel을 사용해 SSH 접근하기 위한 설정&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Cloudflare WARP를 사용해도 서버에 통신 가능하긴 하지만, 목적이 SSH라면 WARP는 좋은 방안이 되지 못한다.&lt;/p&gt;
&lt;p&gt;WARP는 UDP 기반 VPN 서비스이기 때문에 통신이 계속 끊어지기 때문&lt;/p&gt;
&lt;p&gt;SSH용 Routing + cloudflared를 사용해서 서버에 접속한다.&lt;/p&gt;
&lt;h2 id="0-사전준비"&gt;0. 사전준비
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Cloudflare Connectors 설정
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://joonlog.github.io/p/cloudflare-tunnel%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%99%88%EC%84%9C%EB%B2%84-promox-pve-%EC%BD%98%EC%86%94-%EC%A0%91%EA%B7%BC-%EC%84%A4%EC%A0%95/#1-cloudflared-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%97%B0%EB%8F%99" target="_blank" rel="noopener"
&gt;https://joonlog.github.io/p/cloudflare-tunnel을-사용한-홈서버-promox-pve-콘솔-접근-설정/#1-cloudflared-설치-및-연동&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="1-cloudflared-routes-설정"&gt;1. Cloudflared Routes 설정
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;연동한 tunnel을 통해서 연결할 도메인 경로 및 라우팅 경로 설정&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hostname: 보유 도메인 기입&lt;/li&gt;
&lt;li&gt;Type: SSH&lt;/li&gt;
&lt;li&gt;URL: localhost:22&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84-ssh-%EC%A0%91%EA%B7%BC/CloudflareSSH01.png"
width="1899"
height="862"
srcset="https://joonlog.github.io/p/cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84-ssh-%EC%A0%91%EA%B7%BC/CloudflareSSH01_hu_3134605963e9ece8.png 480w, https://joonlog.github.io/p/cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84-ssh-%EC%A0%91%EA%B7%BC/CloudflareSSH01_hu_cc9e551410d8722c.png 1024w"
loading="lazy"
alt="CloudflareSSH01.png"
class="gallery-image"
data-flex-grow="220"
data-flex-basis="528px"
&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;여기까지 설정 완료 시 기입한 서브도메인으로 SSH 접근 가능&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-cloudflare-access-설정"&gt;2. Cloudflare Access 설정
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;서브도메인에 대한 인증 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84-ssh-%EC%A0%91%EA%B7%BC/CloudflareSSH02.png"
width="1891"
height="834"
srcset="https://joonlog.github.io/p/cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84-ssh-%EC%A0%91%EA%B7%BC/CloudflareSSH02_hu_8fe68082c1ee78d8.png 480w, https://joonlog.github.io/p/cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84-ssh-%EC%A0%91%EA%B7%BC/CloudflareSSH02_hu_6b9e1c9035e05ed4.png 1024w"
loading="lazy"
alt="CloudflareSSH02.png"
class="gallery-image"
data-flex-grow="226"
data-flex-basis="544px"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84-ssh-%EC%A0%91%EA%B7%BC/CloudflareSSH03.png"
width="1878"
height="889"
srcset="https://joonlog.github.io/p/cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84-ssh-%EC%A0%91%EA%B7%BC/CloudflareSSH03_hu_bcb751c2f18ff6b9.png 480w, https://joonlog.github.io/p/cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84-ssh-%EC%A0%91%EA%B7%BC/CloudflareSSH03_hu_86c3b5f3a5e1f7b0.png 1024w"
loading="lazy"
alt="CloudflareSSH03.png"
class="gallery-image"
data-flex-grow="211"
data-flex-basis="506px"
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Routes에 설정한 도메인 입력&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84-ssh-%EC%A0%91%EA%B7%BC/CloudflareSSH04.png"
width="1869"
height="657"
srcset="https://joonlog.github.io/p/cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84-ssh-%EC%A0%91%EA%B7%BC/CloudflareSSH04_hu_104b6cb8e48662b6.png 480w, https://joonlog.github.io/p/cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84-ssh-%EC%A0%91%EA%B7%BC/CloudflareSSH04_hu_f0d4cac47153f99d.png 1024w"
loading="lazy"
alt="CloudflareSSH04.png"
class="gallery-image"
data-flex-grow="284"
data-flex-basis="682px"
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Self-hosted 설명에 나와 있듯이 Policy 생성&lt;/p&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84-ssh-%EC%A0%91%EA%B7%BC/CloudflareSSH05.png"
width="1878"
height="881"
srcset="https://joonlog.github.io/p/cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84-ssh-%EC%A0%91%EA%B7%BC/CloudflareSSH05_hu_59e4d92e1d7b35b5.png 480w, https://joonlog.github.io/p/cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84-ssh-%EC%A0%91%EA%B7%BC/CloudflareSSH05_hu_e69b4e984d2c87d9.png 1024w"
loading="lazy"
alt="CloudflareSSH05.png"
class="gallery-image"
data-flex-grow="213"
data-flex-basis="511px"
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PVE 접속 도메인 접근 시 Email 인증하도록 Policy 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://joonlog.github.io/p/cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84-ssh-%EC%A0%91%EA%B7%BC/CloudflareSSH06.png"
width="1410"
height="811"
srcset="https://joonlog.github.io/p/cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84-ssh-%EC%A0%91%EA%B7%BC/CloudflareSSH06_hu_72a815eebfe7db60.png 480w, https://joonlog.github.io/p/cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84-ssh-%EC%A0%91%EA%B7%BC/CloudflareSSH06_hu_63c32a375dd6d0d1.png 1024w"
loading="lazy"
alt="CloudflareSSH06.png"
class="gallery-image"
data-flex-grow="173"
data-flex-basis="417px"
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;설정한 Policy 할당&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-cloudflared-설치"&gt;3. Cloudflared 설치
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;windows&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;winget&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="nx"&gt;Cloudflare&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cloudflared&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rocky 8.10&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;dnf&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="nx"&gt;cloudflared&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="4-ssh-접근"&gt;4. SSH 접근
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Cloudflared 로그인&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;cloudflared&lt;/span&gt; &lt;span class="nx"&gt;access&lt;/span&gt; &lt;span class="nx"&gt;login&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;SSH&lt;/span&gt; &lt;span class="na"&gt;접근&lt;/span&gt; &lt;span class="na"&gt;도메인&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img src="https://joonlog.github.io/p/cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84-ssh-%EC%A0%91%EA%B7%BC/CloudflareSSH07.png"
width="1080"
height="886"
srcset="https://joonlog.github.io/p/cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84-ssh-%EC%A0%91%EA%B7%BC/CloudflareSSH07_hu_ba003a3f09e176f9.png 480w, https://joonlog.github.io/p/cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84-ssh-%EC%A0%91%EA%B7%BC/CloudflareSSH07_hu_34f39429bee2bfce.png 1024w"
loading="lazy"
alt="CloudflareSSH07.png"
class="gallery-image"
data-flex-grow="121"
data-flex-basis="292px"
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;이메일 인증 요구하는 화면 출력됨&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SSH 접근&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;이메일 인증 완료 후 SSH 접근&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;cloudflared&lt;/span&gt; &lt;span class="nx"&gt;access&lt;/span&gt; &lt;span class="nx"&gt;ssh&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;hostname&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;SSH&lt;/span&gt; &lt;span class="na"&gt;접근&lt;/span&gt; &lt;span class="na"&gt;도메인&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;접근 성공!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SSH alias&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ssh 명령어로 접근하기 위한 alias&lt;/li&gt;
&lt;li&gt;Windows
&lt;ul&gt;
&lt;li&gt;C:\Users`&amp;lt;계정명&amp;gt;`.ssh\config&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Linux
&lt;ul&gt;
&lt;li&gt;~/.ssh/config&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;Host&lt;/span&gt; &lt;span class="nx"&gt;pve&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;HostName&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;SSH&lt;/span&gt; &lt;span class="na"&gt;접근&lt;/span&gt; &lt;span class="na"&gt;도메인&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;User&lt;/span&gt; &lt;span class="nx"&gt;root&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;ProxyCommand&lt;/span&gt; &lt;span class="nx"&gt;cloudflared&lt;/span&gt; &lt;span class="nx"&gt;access&lt;/span&gt; &lt;span class="nx"&gt;ssh&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;hostname&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="nx"&gt;h&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;접근 성공!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;</description></item></channel></rss>