{"id":513,"date":"2023-05-12T22:35:49","date_gmt":"2023-05-12T13:35:49","guid":{"rendered":"https:\/\/blog.peddals.com\/?p=513"},"modified":"2023-05-20T15:05:08","modified_gmt":"2023-05-20T06:05:08","slug":"pythonista-3-4-ssh","status":"publish","type":"post","link":"https:\/\/blog.peddals.com\/en\/pythonista-3-4-ssh\/","title":{"rendered":"Run ssh on Pythonista 3.4"},"content":{"rendered":"\n<p>I managed to run ssh.py written in Python 2 on StaSh for Pythonista 3 (ver. 3.4). Here I share what I did.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Note<\/h2>\n\n\n\n<p>The StaSh ssh command is not the best ssh client as it makes iPhone warmer than usual, and StaSh does not have dedicated control or escape virtual key which are well used in Linux\/Unix systems. So, I would suggest a SSH client app such as Termius if you&#8217;r looking for a serious SSH client. This post is rather for those of you who are interested in running (converting) Python 2 scripts on Pythonista 3.4.<\/p>\n\n\n\n<p>Pythonista 3.4 does not include Python 2.7 any longer. Scripts written in Python 2 need to be converted to Python 3 scripts. The script ssh.py comes with StaSh was written in Python 2. Converting it by the Python 2 to 3 tool was not enough.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"443\" src=\"https:\/\/blog.peddals.com\/wp-content\/uploads\/2023\/05\/IMG_1686-1024x443.jpg\" alt=\"\" class=\"wp-image-482\" srcset=\"https:\/\/blog.peddals.com\/wp-content\/uploads\/2023\/05\/IMG_1686-1024x443.jpg 1024w, https:\/\/blog.peddals.com\/wp-content\/uploads\/2023\/05\/IMG_1686-300x130.jpg 300w, https:\/\/blog.peddals.com\/wp-content\/uploads\/2023\/05\/IMG_1686-768x332.jpg 768w, https:\/\/blog.peddals.com\/wp-content\/uploads\/2023\/05\/IMG_1686.jpg 1242w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption class=\"wp-element-caption\">&#8220;Python 2 to 3&#8221; tool can be found under the tool menu.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Version info (StaSh version command)<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>$ version\nStaSh v0.8.0\nPython 3.10.4 (CPython)\nUI stash.system.shui.pythonista_ui\nroot: ~\/Documents\/site-packages\/stash\ncore.py: 2023-05-05 18:00:40\nSELFUPDATE_TARGET: master\nPythonista 3.4 (340012)\niOS 16.4.1 (64-bit iPhone10,2)\nPlatform iOS-16.4.1-iPhone10,2-64bit\nBIN_PATH:\n  ~\/Documents\/bin\n  ~\/Documents\/stash_extensions\/bin\n  ~\/Documents\/site-packages\/stash\/bin<\/code><\/pre><\/div>\n\n\n\n<p>StaSh is the latest dev version as of May 12, 2023 (Please refer to <a href=\"https:\/\/blog.peddals.com\/pythonista3_ver3_4released\/#StaSh\">another post<\/a> for the StaSh installation.)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">List of things I did<\/h2>\n\n\n\n<p>I restarted Pythonista 3 as needed. (You can find how to generate SSH keys in <a href=\"https:\/\/blog.peddals.com\/en\/pythonista3_ssh_to_xserver\/\">my other post<\/a>. It has a tip to adjust number of rows.)<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Copy <em>~\/Documents\/site-packages\/stash\/bin\/ssh.py<\/em> to <em>~\/Documents\/stash_extensions\/bin <\/em>as<em> <strong>ssh3.<\/strong>py<\/em><\/li>\n\n\n\n<li>Open ssh3.py and execute the &#8220;Python 2 to 3&#8221; tool. Apply all suggestions.<\/li>\n\n\n\n<li>Edit function <code>vk_tapped()<\/code> and treat <code>vk.name<\/code> as int (details below)<\/li>\n\n\n\n<li>Open <em>~\/Documents\/site-packages\/stash\/system\/shscreens.py<\/em> and execute the &#8220;Python 2 to 3&#8221; tool. Apply all suggestions.<\/li>\n\n\n\n<li>Replace \/ with \/\/ on lines 541 and 576 of shscreens.py. They are now like this: <code>idx_line, idx_column = idx <strong>\/\/<\/strong> (ncolumns + 1), idx % (ncolumns + 1)<\/code><\/li>\n\n\n\n<li>Execute the command <code>ssh3<\/code> in StaSh<\/li>\n<\/ol>\n\n\n\n<p>Actual code after the changes of the <code>vk_tapped()<\/code> function is below. Lines 242-262. Rename <code>vk.name<\/code> to <code>vk<\/code>, and replace<code>'k_tab'<\/code> with relative integer. By this change, virtual keys like Tab, Up, CC work on the SSH server as tab, up arrow and control+C respectively.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>    def vk_tapped(self, vk):\n        if vk == 7:\n            self.send(&#39;t&#39;)\n        elif vk == 0:\n            self.kc_pressed(&#39;C&#39;, CTRL_KEY_FLAG)\n        elif vk == 1:\n            self.kc_pressed(&#39;D&#39;, CTRL_KEY_FLAG)\n        elif vk == 6:\n            self.kc_pressed(&#39;U&#39;, CTRL_KEY_FLAG)\n        elif vk == 9:\n            self.kc_pressed(&#39;Z&#39;, CTRL_KEY_FLAG)\n        elif vk == 2:\n            self.kc_pressed(&#39;UIKeyInputUpArrow&#39;, 0)\n        elif vk == 3:\n            self.kc_pressed(&#39;UIKeyInputDownArrow&#39;, 0)\n\n        elif vk == 10:\n            if _stash.terminal.is_editing:\n                _stash.terminal.end_editing()\n            else:\n                _stash.terminal.begin_editing()<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Actual errors and helpful info to fix<\/h2>\n\n\n\n<p>I got the below error after converting shscreens.py to a Python 3 script (step #4):<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>system\/shscreens.py&quot;, line 578, in load_pyte_screen\n    c = pyte_screen.buffer[idx_line][idx_column]\nTypeError: list indices must be integers or slices, not float<\/code><\/pre><\/div>\n\n\n\n<p>Somehow adding <code>int(idx_line)<\/code> and <code>int(idx_column)<\/code> before line 578 didn&#8217;t resolve this issue. Helpful info (or answer) was found in this old issue:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-style-default is-layout-flow wp-block-quote-is-layout-flow\">\n<p>My guess would be that stash uses \/ division for line\/column indices. On Python 3 \/ always produces a float. <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">The fix is simple: replace it with flooring division \/\/<\/mark>.<\/p>\n<cite><a href=\"https:\/\/github.com\/selectel\/pyte\/issues\/123\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/selectel\/pyte\/issues\/123<\/a><\/cite><\/blockquote>\n\n\n\n<p>Another error that wast the reason of the change step #3 was this:<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>  File &quot;stash_extensions\/bin\/ssh3.py&quot;, line 230, in vk_tapped\n    if vk.name == &#39;k_tab&#39;:\nAttributeError: &#39;int&#39; object has no attribute &#39;name&#39;<\/code><\/pre><\/div>\n\n\n\n<p>I am still not sure how this worked in Python 2. Without fixing this you can establish a VPN connection, but virtual keys won&#8217;t function. To fix this issue, I added <code>print(vk)<\/code> at the top of the def block. After connecting an SSH session, I pressed each virtual key (Tab, Up, CC, etc.),  opened Console to confirm the number and replaced with the name. There should be better way but this worked.<\/p>\n\n\n\n<p>Lastly this was the reason of my motivation to make the ssh command work.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>StaSh works with both Pythonista 2 and 3, though <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">not all commands support python3<\/mark>.<\/em><\/p>\n<cite><a href=\"https:\/\/github.com\/ywangd\/stash\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/ywangd\/stash<\/a><\/cite><\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Image by Stable Diffusion<\/h2>\n\n\n\n<p>Off topic: The eye-catch image was generated by Mochi Diffusion, a Stable Diffusion client for macOS. Added &#8220;SSH&#8221; on the AI generated image using a graphic editor. Below is the details:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Date:\n2023\/5\/6\/ 22:31:24\n\nModel:\nrealisticVision-v20_split-einsum\n\nSize:\n512 x 512\n\nInclude in Image:\ncartoon, a young man waring glasses, super happy\n\nExclude from Image:\n\n\nSeed:\n3826992198\n\nSteps:\n20\n\nGuidance Scale:\n11.0\n\nScheduler:\nDPM-Solver++\n\nML Compute Unit:\nCPU &amp; Neural Engine<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>I managed to run ssh.py written in Python 2 on StaSh for Pythonista 3 (ver. 3.4). Here I share what I did. Not &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/blog.peddals.com\/en\/pythonista-3-4-ssh\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Run ssh on Pythonista 3.4&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":481,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_locale":"en_US","_original_post":"https:\/\/blog.peddals.com\/?p=480","footnotes":""},"categories":[4,5],"tags":[],"class_list":["post-513","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python","category-pythonista3","en-US"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Run ssh on Pythonista 3.4 | Peddals Blog<\/title>\n<meta name=\"description\" content=\"How to make ssh work on StaSh for Pythonista 3 (ver. 3.4)\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.peddals.com\/en\/pythonista-3-4-ssh\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Run ssh on Pythonista 3.4 | Peddals Blog\" \/>\n<meta property=\"og:description\" content=\"How to make ssh work on StaSh for Pythonista 3 (ver. 3.4)\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.peddals.com\/en\/pythonista-3-4-ssh\/\" \/>\n<meta property=\"og:site_name\" content=\"Peddals Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-12T13:35:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-05-20T06:05:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.peddals.com\/wp-content\/uploads\/2023\/05\/cartoon-a-young-man-waring-glasses-super-happy-add-word-SSH-to-th.524.3826992198.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"512\" \/>\n\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Handsome\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Handsome\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.peddals.com\\\/en\\\/pythonista-3-4-ssh\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.peddals.com\\\/en\\\/pythonista-3-4-ssh\\\/\"},\"author\":{\"name\":\"Handsome\",\"@id\":\"https:\\\/\\\/blog.peddals.com\\\/#\\\/schema\\\/person\\\/81b2dabca748c3d11a45722f02d9d994\"},\"headline\":\"Run ssh on Pythonista 3.4\",\"datePublished\":\"2023-05-12T13:35:49+00:00\",\"dateModified\":\"2023-05-20T06:05:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.peddals.com\\\/en\\\/pythonista-3-4-ssh\\\/\"},\"wordCount\":535,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blog.peddals.com\\\/#\\\/schema\\\/person\\\/81b2dabca748c3d11a45722f02d9d994\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.peddals.com\\\/en\\\/pythonista-3-4-ssh\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.peddals.com\\\/wp-content\\\/uploads\\\/2023\\\/05\\\/cartoon-a-young-man-waring-glasses-super-happy-add-word-SSH-to-th.524.3826992198.jpg\",\"articleSection\":[\"Python\",\"Pythonista3\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blog.peddals.com\\\/en\\\/pythonista-3-4-ssh\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.peddals.com\\\/en\\\/pythonista-3-4-ssh\\\/\",\"url\":\"https:\\\/\\\/blog.peddals.com\\\/en\\\/pythonista-3-4-ssh\\\/\",\"name\":\"Run ssh on Pythonista 3.4 | Peddals Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.peddals.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.peddals.com\\\/en\\\/pythonista-3-4-ssh\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.peddals.com\\\/en\\\/pythonista-3-4-ssh\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.peddals.com\\\/wp-content\\\/uploads\\\/2023\\\/05\\\/cartoon-a-young-man-waring-glasses-super-happy-add-word-SSH-to-th.524.3826992198.jpg\",\"datePublished\":\"2023-05-12T13:35:49+00:00\",\"dateModified\":\"2023-05-20T06:05:08+00:00\",\"description\":\"How to make ssh work on StaSh for Pythonista 3 (ver. 3.4)\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.peddals.com\\\/en\\\/pythonista-3-4-ssh\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.peddals.com\\\/en\\\/pythonista-3-4-ssh\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blog.peddals.com\\\/en\\\/pythonista-3-4-ssh\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blog.peddals.com\\\/wp-content\\\/uploads\\\/2023\\\/05\\\/cartoon-a-young-man-waring-glasses-super-happy-add-word-SSH-to-th.524.3826992198.jpg\",\"contentUrl\":\"https:\\\/\\\/blog.peddals.com\\\/wp-content\\\/uploads\\\/2023\\\/05\\\/cartoon-a-young-man-waring-glasses-super-happy-add-word-SSH-to-th.524.3826992198.jpg\",\"width\":512,\"height\":512},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.peddals.com\\\/en\\\/pythonista-3-4-ssh\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u30db\u30fc\u30e0\",\"item\":\"https:\\\/\\\/blog.peddals.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Run ssh on Pythonista 3.4\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.peddals.com\\\/#website\",\"url\":\"https:\\\/\\\/blog.peddals.com\\\/\",\"name\":\"Peddals Blog\",\"description\":\"AI, LLM, Python, Mac, Pythonista3, iOS, etc. in Japanese and English\",\"publisher\":{\"@id\":\"https:\\\/\\\/blog.peddals.com\\\/#\\\/schema\\\/person\\\/81b2dabca748c3d11a45722f02d9d994\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.peddals.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/blog.peddals.com\\\/#\\\/schema\\\/person\\\/81b2dabca748c3d11a45722f02d9d994\",\"name\":\"Handsome\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/51d7363349ec538c4d62c9ebe89488fd7388729ad0c9dfeebd8bb32ebfb11f17?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/51d7363349ec538c4d62c9ebe89488fd7388729ad0c9dfeebd8bb32ebfb11f17?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/51d7363349ec538c4d62c9ebe89488fd7388729ad0c9dfeebd8bb32ebfb11f17?s=96&d=mm&r=g\",\"caption\":\"Handsome\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/51d7363349ec538c4d62c9ebe89488fd7388729ad0c9dfeebd8bb32ebfb11f17?s=96&d=mm&r=g\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Run ssh on Pythonista 3.4 | Peddals Blog","description":"How to make ssh work on StaSh for Pythonista 3 (ver. 3.4)","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.peddals.com\/en\/pythonista-3-4-ssh\/","og_locale":"en_US","og_type":"article","og_title":"Run ssh on Pythonista 3.4 | Peddals Blog","og_description":"How to make ssh work on StaSh for Pythonista 3 (ver. 3.4)","og_url":"https:\/\/blog.peddals.com\/en\/pythonista-3-4-ssh\/","og_site_name":"Peddals Blog","article_published_time":"2023-05-12T13:35:49+00:00","article_modified_time":"2023-05-20T06:05:08+00:00","og_image":[{"width":512,"height":512,"url":"https:\/\/blog.peddals.com\/wp-content\/uploads\/2023\/05\/cartoon-a-young-man-waring-glasses-super-happy-add-word-SSH-to-th.524.3826992198.jpg","type":"image\/jpeg"}],"author":"Handsome","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Handsome","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.peddals.com\/en\/pythonista-3-4-ssh\/#article","isPartOf":{"@id":"https:\/\/blog.peddals.com\/en\/pythonista-3-4-ssh\/"},"author":{"name":"Handsome","@id":"https:\/\/blog.peddals.com\/#\/schema\/person\/81b2dabca748c3d11a45722f02d9d994"},"headline":"Run ssh on Pythonista 3.4","datePublished":"2023-05-12T13:35:49+00:00","dateModified":"2023-05-20T06:05:08+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.peddals.com\/en\/pythonista-3-4-ssh\/"},"wordCount":535,"commentCount":0,"publisher":{"@id":"https:\/\/blog.peddals.com\/#\/schema\/person\/81b2dabca748c3d11a45722f02d9d994"},"image":{"@id":"https:\/\/blog.peddals.com\/en\/pythonista-3-4-ssh\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.peddals.com\/wp-content\/uploads\/2023\/05\/cartoon-a-young-man-waring-glasses-super-happy-add-word-SSH-to-th.524.3826992198.jpg","articleSection":["Python","Pythonista3"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.peddals.com\/en\/pythonista-3-4-ssh\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.peddals.com\/en\/pythonista-3-4-ssh\/","url":"https:\/\/blog.peddals.com\/en\/pythonista-3-4-ssh\/","name":"Run ssh on Pythonista 3.4 | Peddals Blog","isPartOf":{"@id":"https:\/\/blog.peddals.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.peddals.com\/en\/pythonista-3-4-ssh\/#primaryimage"},"image":{"@id":"https:\/\/blog.peddals.com\/en\/pythonista-3-4-ssh\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.peddals.com\/wp-content\/uploads\/2023\/05\/cartoon-a-young-man-waring-glasses-super-happy-add-word-SSH-to-th.524.3826992198.jpg","datePublished":"2023-05-12T13:35:49+00:00","dateModified":"2023-05-20T06:05:08+00:00","description":"How to make ssh work on StaSh for Pythonista 3 (ver. 3.4)","breadcrumb":{"@id":"https:\/\/blog.peddals.com\/en\/pythonista-3-4-ssh\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.peddals.com\/en\/pythonista-3-4-ssh\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.peddals.com\/en\/pythonista-3-4-ssh\/#primaryimage","url":"https:\/\/blog.peddals.com\/wp-content\/uploads\/2023\/05\/cartoon-a-young-man-waring-glasses-super-happy-add-word-SSH-to-th.524.3826992198.jpg","contentUrl":"https:\/\/blog.peddals.com\/wp-content\/uploads\/2023\/05\/cartoon-a-young-man-waring-glasses-super-happy-add-word-SSH-to-th.524.3826992198.jpg","width":512,"height":512},{"@type":"BreadcrumbList","@id":"https:\/\/blog.peddals.com\/en\/pythonista-3-4-ssh\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u30db\u30fc\u30e0","item":"https:\/\/blog.peddals.com\/"},{"@type":"ListItem","position":2,"name":"Run ssh on Pythonista 3.4"}]},{"@type":"WebSite","@id":"https:\/\/blog.peddals.com\/#website","url":"https:\/\/blog.peddals.com\/","name":"Peddals Blog","description":"AI, LLM, Python, Mac, Pythonista3, iOS, etc. in Japanese and English","publisher":{"@id":"https:\/\/blog.peddals.com\/#\/schema\/person\/81b2dabca748c3d11a45722f02d9d994"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.peddals.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/blog.peddals.com\/#\/schema\/person\/81b2dabca748c3d11a45722f02d9d994","name":"Handsome","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/51d7363349ec538c4d62c9ebe89488fd7388729ad0c9dfeebd8bb32ebfb11f17?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/51d7363349ec538c4d62c9ebe89488fd7388729ad0c9dfeebd8bb32ebfb11f17?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/51d7363349ec538c4d62c9ebe89488fd7388729ad0c9dfeebd8bb32ebfb11f17?s=96&d=mm&r=g","caption":"Handsome"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/51d7363349ec538c4d62c9ebe89488fd7388729ad0c9dfeebd8bb32ebfb11f17?s=96&d=mm&r=g"}}]}},"_links":{"self":[{"href":"https:\/\/blog.peddals.com\/wp-json\/wp\/v2\/posts\/513","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.peddals.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.peddals.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.peddals.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.peddals.com\/wp-json\/wp\/v2\/comments?post=513"}],"version-history":[{"count":7,"href":"https:\/\/blog.peddals.com\/wp-json\/wp\/v2\/posts\/513\/revisions"}],"predecessor-version":[{"id":555,"href":"https:\/\/blog.peddals.com\/wp-json\/wp\/v2\/posts\/513\/revisions\/555"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.peddals.com\/wp-json\/wp\/v2\/media\/481"}],"wp:attachment":[{"href":"https:\/\/blog.peddals.com\/wp-json\/wp\/v2\/media?parent=513"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.peddals.com\/wp-json\/wp\/v2\/categories?post=513"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.peddals.com\/wp-json\/wp\/v2\/tags?post=513"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}