<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Ssh on tsvinc</title>
    <link>https://tsvinc.dev/tags/ssh/</link>
    <description>Recent content in Ssh on tsvinc</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 14 Jul 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://tsvinc.dev/tags/ssh/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Six gotchas deep in RouterOS containers</title>
      <link>https://tsvinc.dev/posts/routeros-container-gotchas/</link>
      <pubDate>Tue, 14 Jul 2026 00:00:00 +0000</pubDate>
      <guid>https://tsvinc.dev/posts/routeros-container-gotchas/</guid>
      <description>&lt;p&gt;&lt;figure class=&#34;svg-figure&#34; role=&#34;img&#34; aria-label=&#34;A hand-drawn doodle: a sad container cube asks container=yes? and the router replies press the button, an arrow pointing at its physical mode button — software asks, hardware answers&#34;&gt;&#xA;&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; width=&#34;1200&#34; height=&#34;675&#34; viewBox=&#34;0 0 1200 675&#34; role=&#34;img&#34; aria-labelledby=&#34;title desc&#34;&gt;&#xA;  &lt;title id=&#34;title&#34;&gt;A container asks RouterOS to run&lt;/title&gt;&#xA;  &lt;desc id=&#34;desc&#34;&gt;A worried container cube asks for container mode. A large router answers by directing a loose arrow at its recessed physical button.&lt;/desc&gt;&#xA;&#xA;  &lt;defs&gt;&#xA;    &lt;marker id=&#34;press-arrow&#34; viewBox=&#34;0 0 12 12&#34; refX=&#34;10&#34; refY=&#34;6&#34; markerWidth=&#34;11&#34; markerHeight=&#34;11&#34; orient=&#34;auto&#34;&gt;&#xA;      &lt;path d=&#34;M1 1 L11 6 L1 11 L3.4 6 Z&#34; fill=&#34;var(--link, #78d8bd)&#34;/&gt;&#xA;    &lt;/marker&gt;&#xA;  &lt;/defs&gt;&#xA;&#xA;  &lt;rect x=&#34;0&#34; y=&#34;0&#34; width=&#34;1200&#34; height=&#34;675&#34; fill=&#34;var(--bg, #111114)&#34;/&gt;&#xA;&#xA;  &lt;!-- Sparse notebook texture keeps the field loose without becoming annotation. --&gt;&#xA;  &lt;g fill=&#34;none&#34; stroke=&#34;var(--fg-faint, #4a4a52)&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; opacity=&#34;0.5&#34;&gt;&#xA;    &lt;path d=&#34;M54 118 q21 -6 42 0 M106 116 l17 -3&#34;/&gt;&#xA;    &lt;path d=&#34;M1080 103 q26 5 54 -1 M1142 103 l17 3&#34;/&gt;&#xA;    &lt;path d=&#34;M49 570 q23 7 49 1 M1094 584 q28 -6 57 1&#34;/&gt;&#xA;    &lt;path d=&#34;M542 597 q56 8 112 0 M667 600 q19 3 39 -1&#34;/&gt;&#xA;  &lt;/g&gt;&#xA;&#xA;  &lt;!-- The software request: one small, worried container cube. --&gt;&#xA;  &lt;g transform=&#34;rotate(-2 339 382)&#34;&gt;&#xA;    &lt;path d=&#34;M215 286 L357 218 L490 292 L348 365 Z&#34;&#xA;          fill=&#34;var(--bg-secondary, #18181c)&#34; stroke=&#34;var(--accent, #e787db)&#34; stroke-width=&#34;5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;&#xA;    &lt;path d=&#34;M215 286 L348 365 L347 523 L215 445 Z&#34;&#xA;          fill=&#34;var(--bg-secondary, #18181c)&#34; stroke=&#34;var(--accent, #e787db)&#34; stroke-width=&#34;5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;&#xA;    &lt;path d=&#34;M348 365 L490 292 L488 451 L347 523 Z&#34;&#xA;          fill=&#34;var(--bg, #111114)&#34; stroke=&#34;var(--accent, #e787db)&#34; stroke-width=&#34;5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;&#xA;&#xA;    &lt;!-- corrugations and corner hardware --&gt;&#xA;    &lt;g fill=&#34;none&#34; stroke=&#34;var(--fg-muted, #aaaaaf)&#34; stroke-width=&#34;3&#34; stroke-linecap=&#34;round&#34; opacity=&#34;0.82&#34;&gt;&#xA;      &lt;path d=&#34;M239 302 L238 445 M267 320 L266 461 M296 337 L295 478 M324 353 L324 495&#34;/&gt;&#xA;      &lt;path d=&#34;M373 365 L372 504 M402 350 L401 486 M431 336 L430 469 M460 321 L459 451&#34;/&gt;&#xA;      &lt;path d=&#34;M239 278 L359 238 M265 296 L386 255 M294 312 L414 272 M321 330 L442 286&#34;/&gt;&#xA;    &lt;/g&gt;&#xA;    &lt;g fill=&#34;none&#34; stroke=&#34;var(--fg, #cdcdd0)&#34; stroke-width=&#34;4&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&#xA;      &lt;path d=&#34;M224 310 l18 11 l0 21 M339 378 l-17 -10 l0 23 M224 425 l18 11 l0 21 M338 500 l-17 -10 l0 -22&#34;/&gt;&#xA;    &lt;/g&gt;&#xA;&#xA;    &lt;!-- restrained face: looking toward the hardware --&gt;&#xA;    &lt;ellipse cx=&#34;277&#34; cy=&#34;391&#34; rx=&#34;7&#34; ry=&#34;10&#34; fill=&#34;var(--fg, #cdcdd0)&#34;/&gt;&#xA;    &lt;ellipse cx=&#34;316&#34; cy=&#34;414&#34; rx=&#34;7&#34; ry=&#34;10&#34; fill=&#34;var(--fg, #cdcdd0)&#34;/&gt;&#xA;    &lt;circle cx=&#34;280&#34; cy=&#34;389&#34; r=&#34;2.5&#34; fill=&#34;var(--bg, #111114)&#34;/&gt;&#xA;    &lt;circle cx=&#34;319&#34; cy=&#34;412&#34; r=&#34;2.5&#34; fill=&#34;var(--bg, #111114)&#34;/&gt;&#xA;    &lt;path d=&#34;M272 444 Q293 430 321 455&#34; fill=&#34;none&#34; stroke=&#34;var(--fg, #cdcdd0)&#34; stroke-width=&#34;4&#34; stroke-linecap=&#34;round&#34;/&gt;&#xA;&#xA;    &lt;!-- small pleading wobble marks, not limbs --&gt;&#xA;    &lt;path d=&#34;M193 354 q-14 8 -19 22 M195 378 q-16 2 -23 13&#34;&#xA;          fill=&#34;none&#34; stroke=&#34;var(--fg-heading, #e9a447)&#34; stroke-width=&#34;4&#34; stroke-linecap=&#34;round&#34;/&gt;&#xA;  &lt;/g&gt;&#xA;&#xA;  &lt;!-- Software asks. --&gt;&#xA;  &lt;g transform=&#34;rotate(-1 292 171)&#34;&gt;&#xA;    &lt;path d=&#34;M116 115 Q113 101 130 98 L425 101 Q440 102 441 116 L438 181 Q437 196 421 196 L337 194 L309 221 L302 193 L132 191 Q117 190 117 176 Z&#34;&#xA;          fill=&#34;var(--bg-secondary, #18181c)&#34; stroke=&#34;var(--fg, #cdcdd0)&#34; stroke-width=&#34;4&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;&#xA;    &lt;text x=&#34;153&#34; y=&#34;158&#34; fill=&#34;var(--accent, #e787db)&#34; font-family=&#34;Commit Mono, ui-monospace, monospace&#34; font-size=&#34;27&#34; font-weight=&#34;700&#34;&gt;container=yes?&lt;/text&gt;&#xA;  &lt;/g&gt;&#xA;&#xA;  &lt;!-- The hardware answer: a big physical router, solid and immovable. --&gt;&#xA;  &lt;g transform=&#34;rotate(0.7 858 388)&#34;&gt;&#xA;    &lt;!-- antennas --&gt;&#xA;    &lt;path d=&#34;M694 277 L670 174 Q667 160 678 157 Q691 155 694 170 L716 276&#34;&#xA;          fill=&#34;var(--bg-secondary, #18181c)&#34; stroke=&#34;var(--fg, #cdcdd0)&#34; stroke-width=&#34;5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;&#xA;    &lt;path d=&#34;M1032 274 L1057 166 Q1060 153 1072 156 Q1084 160 1080 173 L1054 280&#34;&#xA;          fill=&#34;var(--bg-secondary, #18181c)&#34; stroke=&#34;var(--fg, #cdcdd0)&#34; stroke-width=&#34;5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;&#xA;&#xA;    &lt;!-- top and front planes --&gt;&#xA;    &lt;path d=&#34;M635 284 Q639 269 655 268 L1039 272 Q1052 272 1060 285 L1100 337 L683 340 Z&#34;&#xA;          fill=&#34;var(--bg-secondary, #18181c)&#34; stroke=&#34;var(--fg, #cdcdd0)&#34; stroke-width=&#34;5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;&#xA;    &lt;path d=&#34;M683 340 L1100 337 L1087 514 Q1086 528 1070 529 L696 530 Q680 529 680 514 Z&#34;&#xA;          fill=&#34;var(--bg-secondary, #18181c)&#34; stroke=&#34;var(--fg, #cdcdd0)&#34; stroke-width=&#34;5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;&#xA;    &lt;path d=&#34;M685 383 C796 379 958 388 1096 381&#34; fill=&#34;none&#34; stroke=&#34;var(--border, #2a2a30)&#34; stroke-width=&#34;3&#34; stroke-linecap=&#34;round&#34;/&gt;&#xA;&#xA;    &lt;!-- vents and status lights --&gt;&#xA;    &lt;g fill=&#34;none&#34; stroke=&#34;var(--fg-faint, #4a4a52)&#34; stroke-width=&#34;3&#34; stroke-linecap=&#34;round&#34;&gt;&#xA;      &lt;path d=&#34;M720 306 l57 0 M791 306 l57 1 M862 307 l57 -1 M933 307 l57 1&#34;/&gt;&#xA;    &lt;/g&gt;&#xA;    &lt;circle cx=&#34;731&#34; cy=&#34;463&#34; r=&#34;7&#34; fill=&#34;var(--link, #78d8bd)&#34;/&gt;&#xA;    &lt;circle cx=&#34;760&#34; cy=&#34;463&#34; r=&#34;7&#34; fill=&#34;var(--fg-heading, #e9a447)&#34;/&gt;&#xA;    &lt;circle cx=&#34;789&#34; cy=&#34;463&#34; r=&#34;7&#34; fill=&#34;var(--fg-muted, #aaaaaf)&#34;/&gt;&#xA;    &lt;path d=&#34;M713 492 q58 5 112 0&#34; fill=&#34;none&#34; stroke=&#34;var(--fg-faint, #4a4a52)&#34; stroke-width=&#34;3&#34; stroke-linecap=&#34;round&#34;/&gt;&#xA;&#xA;    &lt;!-- the unmistakably physical, recessed mode/reset button --&gt;&#xA;    &lt;circle cx=&#34;994&#34; cy=&#34;447&#34; r=&#34;46&#34; fill=&#34;var(--bg, #111114)&#34; stroke=&#34;var(--fg-heading, #e9a447)&#34; stroke-width=&#34;5&#34;/&gt;&#xA;    &lt;circle cx=&#34;994&#34; cy=&#34;447&#34; r=&#34;23&#34; fill=&#34;var(--bg-secondary, #18181c)&#34; stroke=&#34;var(--accent, #e787db)&#34; stroke-width=&#34;5&#34;/&gt;&#xA;    &lt;circle cx=&#34;994&#34; cy=&#34;447&#34; r=&#34;8&#34; fill=&#34;var(--fg, #cdcdd0)&#34;/&gt;&#xA;    &lt;path d=&#34;M958 413 q37 -25 73 2 M962 482 q34 21 66 -2&#34;&#xA;          fill=&#34;none&#34; stroke=&#34;var(--fg-muted, #aaaaaf)&#34; stroke-width=&#34;2.5&#34; stroke-linecap=&#34;round&#34; opacity=&#34;0.85&#34;/&gt;&#xA;&#xA;    &lt;!-- feet --&gt;&#xA;    &lt;path d=&#34;M725 530 l-4 16 l44 0 l-5 -16 M1018 529 l-4 17 l45 0 l-6 -17&#34;&#xA;          fill=&#34;var(--fg, #cdcdd0)&#34; stroke=&#34;var(--fg, #cdcdd0)&#34; stroke-width=&#34;2&#34; stroke-linejoin=&#34;round&#34;/&gt;&#xA;  &lt;/g&gt;&#xA;&#xA;  &lt;!-- Hardware answers. The loose arrow performs the press; no hand is needed. --&gt;&#xA;  &lt;g transform=&#34;rotate(1 865 165)&#34;&gt;&#xA;    &lt;path d=&#34;M650 91 Q648 78 663 76 L1048 78 Q1064 79 1065 94 L1064 160 Q1063 175 1047 176 L941 174 L917 203 L910 174 L665 171 Q650 170 651 155 Z&#34;&#xA;          fill=&#34;var(--bg-secondary, #18181c)&#34; stroke=&#34;var(--fg, #cdcdd0)&#34; stroke-width=&#34;4&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;&#xA;    &lt;text x=&#34;701&#34; y=&#34;137&#34; fill=&#34;var(--link, #78d8bd)&#34; font-family=&#34;Commit Mono, ui-monospace, monospace&#34; font-size=&#34;28&#34; font-weight=&#34;700&#34;&gt;press the button&lt;/text&gt;&#xA;  &lt;/g&gt;&#xA;&#xA;  &lt;path d=&#34;M938 200 C1000 238 1058 292 1037 352 C1028 380 1009 393 997 411&#34;&#xA;        fill=&#34;none&#34; stroke=&#34;var(--link, #78d8bd)&#34; stroke-width=&#34;7&#34; stroke-linecap=&#34;round&#34; marker-end=&#34;url(#press-arrow)&#34;/&gt;&#xA;  &lt;path d=&#34;M1019 381 l13 8 M1030 365 l15 4 M1006 393 l8 12&#34;&#xA;        fill=&#34;none&#34; stroke=&#34;var(--fg-heading, #e9a447)&#34; stroke-width=&#34;4&#34; stroke-linecap=&#34;round&#34;/&gt;&#xA;&#xA;  &lt;!-- grounding scribbles --&gt;&#xA;  &lt;g fill=&#34;none&#34; stroke=&#34;var(--border, #2a2a30)&#34; stroke-width=&#34;3&#34; stroke-linecap=&#34;round&#34;&gt;&#xA;    &lt;path d=&#34;M144 557 C286 567 422 554 527 562&#34;/&gt;&#xA;    &lt;path d=&#34;M622 563 C808 552 998 568 1122 559&#34;/&gt;&#xA;  &lt;/g&gt;&#xA;&lt;/svg&gt;&#xA;&#xA;&lt;/figure&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
