{"id":1887,"date":"2023-07-05T13:54:56","date_gmt":"2023-07-05T13:54:56","guid":{"rendered":"https:\/\/dev95.site\/easy-connection-to-aws-mac-instances-with-ec2macconnector\/"},"modified":"2023-07-05T13:54:56","modified_gmt":"2023-07-05T13:54:56","slug":"easy-connection-to-aws-mac-instances-with-ec2macconnector","status":"publish","type":"post","link":"https:\/\/dev95.site\/ar\/easy-connection-to-aws-mac-instances-with-ec2macconnector\/","title":{"rendered":"Easy connection to AWS Mac instances with EC2macConnector"},"content":{"rendered":"<div id=\"dev95-2932524403\" class=\"dev95-- dev95-entity-placement\"><script async=\"async\" data-cfasync=\"false\" src=\"https:\/\/pl27862732.profitableratecpmnetwork.com\/2ad7a50e0bbc23ac6801d7b77c501463\/invoke.js\"><\/script>\r\n<div id=\"container-2ad7a50e0bbc23ac6801d7b77c501463\"><\/div><\/div><div>\n<h2 id=\"overview\">Overview<\/h2>\n<p><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/storage.ghost.io\/c\/ae\/f4\/aef4d625-32a2-417b-86f4-22c70a9b47a1\/content\/images\/2023\/07\/MacStadium.webp?w=1280&#038;ssl=1\" alt=\"Easy connection to AWS Mac instances with EC2macConnector\"><\/p>\n<p>Amazon Web Services (AWS) provides <a href=\"https:\/\/aws.amazon.com\/ec2\/instance-types\/mac\/?ref=albertodebortoli.com\">EC2 Mac instances<\/a> commonly used as CI workers. Configuring them can be either a manual or an automated process, depending on the DevOps and Platform Engineering experience in your company. No matter what process you adopt, it is sometimes useful to log into the instances to investigate problems.<\/p>\n<p><a href=\"https:\/\/github.com\/albertodebortoli\/EC2macConnector?ref=albertodebortoli.com\">EC2macConnector<\/a> is a CLI tool written in Swift that simplifies the process of connecting over SSH and VNC for DevOps engineers, removing the need of updating private keys and maintaining the list of IPs that change across deployment cycles.<\/p><div id=\"dev95-3368385209\" class=\"dev95- dev95-entity-placement\"><center>\r\n<script>\r\n  atOptions = {\r\n    'key' : '4ba6b6513c00e0ba76511f798ae56401',\r\n    'format' : 'iframe',\r\n    'height' : 50,\r\n    'width' : 320,\r\n    'params' : {}\r\n  };\r\n<\/script>\r\n<script src=\"https:\/\/www.highrevenueformat.com\/4ba6b6513c00e0ba76511f798ae56401\/invoke.js\"><\/script>\r\n\t<\/center><\/div>\n<h2 id=\"connecting-to-ec2-mac-instances-without-ec2macconnector\">Connecting to EC2 Mac instances without EC2macConnector<\/h2>\n<p><a href=\"https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/ec2-mac-instances.html?ref=albertodebortoli.com\">AWS documentation<\/a> describes the steps needed to allow connecting via VNC:<\/p>\n<ol>\n<li>Start the Apple Remote Desktop agent and enable remote desktop access on the instance<\/li>\n<li>Set the password for the <code>ec2-user<\/code> user on the instance to allow connecting over VNC<\/li>\n<li>Start an SSH session<\/li>\n<li>Connect over VNC<\/li>\n<\/ol>\n<p>Assuming steps 1 and 2 and done, steps 3 and 4 are usually manual and repetitive: the private keys and IPs usually change across deployments which could happen frequently, even daily.<\/p>\n<p>Here is how to start an SSH session in the terminal binding a port locally:<\/p>\n<pre><code class=\"language-bash\">ssh ec2-user@&lt;instance_IP&gt; \n  -L &lt;local_port&gt;:localhost:5900 \n  -i &lt;path_to_privae_key&gt; <\/code><\/pre>\n<p>To connect over VNC you can type the following in Finder \u2192 Go \u2192 Connect to Server (\u2318 + K) and click Connect:<\/p>\n<pre><code class=\"language-bash\">vnc:\/\/ec2-user@localhost:&lt;local_port&gt;\n<\/code><\/pre>\n<p>or you could create a <code>.vncloc<\/code> file with the following content and simply open it:<\/p>\n<pre><code class=\"language-xml\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;!DOCTYPE plist PUBLIC \"-\/\/Apple\/\/DTD PLIST 1.0\/\/EN\" \"&lt;http:\/\/www.apple.com\/DTDs\/PropertyList-1.0.dtd&gt;\"&gt;\n&lt;plist version=\"1.0\"&gt;\n&lt;dict&gt;\n\t&lt;key&gt;URL&lt;\/key&gt;\n\t&lt;string&gt;vnc:\/\/ec2-user@localhost:&lt;local_port&gt;&lt;\/string&gt;\n&lt;\/dict&gt;\n&lt;\/plist&gt;\n<\/code><\/pre>\n<p>If you are a system administrator, you might consider <a href=\"https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/Connect-using-EC2-Instance-Connect.html?ref=albertodebortoli.com\">EC2 Instance Connect<\/a>, but sadly, in my experience, it&#8217;s not a working option for EC2 Mac instances even though I couldn&#8217;t find evidence confirming or denying this statement. <\/p>\n<p>Administrators could also consider using <a href=\"https:\/\/apps.apple.com\/gb\/app\/apple-remote-desktop\/id409907375?mt=12&amp;ref=albertodebortoli.com\">Apple Remote Desktop<\/a> which comes with a price tag of $\/\u00a379.99.<\/p>\n<h2 id=\"connecting-to-ec2-mac-instances-with-ec2macconnector\">Connecting to EC2 Mac instances with EC2macConnector<\/h2>\n<p>EC2macConnector is a simple and free tool that works in 2 steps:<\/p>\n<ul>\n<li>the <code>configure<\/code> command fetches the private keys and the IP addresses of the running EC2 Mac instances in a given region, and creates files using the said information to connect over SSH and VNC:<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">ec2macConnector configure \n  --region &lt;aws_region&gt; \n  --secrets-prefix &lt;mac_metal_private_keys_prefix&gt;<\/code><\/pre>\n<p>Read below or the <a href=\"https:\/\/github.com\/albertodebortoli\/EC2macConnector?ref=albertodebortoli.com\">README<\/a> for more information on the secrets prefix value.<\/p>\n<ul>\n<li>the <code>connect<\/code> command connects to the instances via SSH or VNC.<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">ec2macConnector connect --region &lt;aws_region&gt; &lt;fleet_index&gt;\n<\/code><\/pre>\n<pre><code class=\"language-bash\">ec2macConnector connect --region &lt;aws_region&gt; &lt;fleet_index&gt; --vnc\n<\/code><\/pre>\n<div class=\"kg-card kg-callout-card kg-callout-card-grey\">\n<div class=\"kg-callout-emoji\">\ud83d\udca1<\/div>\n<div class=\"kg-callout-text\">Connecting over VNC requires an SSH session to be established first.<\/div>\n<\/div>\n<p>As with any tool written using <a href=\"https:\/\/github.com\/apple\/swift-argument-parser?ref=albertodebortoli.com\">ArgumentParser<\/a>, use the <code>--help<\/code> flag to get more information.<\/p>\n<h2 id=\"requirements\">Requirements<\/h2>\n<p>There are some requirements to respect for the tool to work:<\/p>\n<h3 id=\"permissions\">Permissions<\/h3>\n<p>EC2macConnector requires AWS credentials either set as environment variables (<code>AWS_ACCESS_KEY_ID<\/code> and <code>AWS_SECRET_ACCESS_KEY<\/code>) or configured in <code>~\/.aws\/credentials<\/code> via the <a href=\"https:\/\/aws.amazon.com\/cli\/?ref=albertodebortoli.com\">AWS CLI<\/a>. Environment variables take precedence.<\/p>\n<p>The user must be granted the following permissions:<\/p>\n<ul>\n<li><code>ec2:DescribeInstances<\/code><\/li>\n<li><code>secretsmanager:ListSecrets<\/code><\/li>\n<li><code>secretsmanager:GetSecretValue<\/code><\/li>\n<\/ul>\n<h3 id=\"ec2-instances\">EC2 instances<\/h3>\n<p>The EC2 Mac instances must have the <code>EC2macConnector:FleetIndex<\/code> tag set to the index of the instance in the fleet. Indexes should start at 1. Instances that don&#8217;t have the said tag will be ignored.<\/p>\n<h3 id=\"secrets-and-key-pairs-formats\">Secrets and key pairs formats<\/h3>\n<p>EC2macConnector assumes that the private key for each instance key pair is stored in SecretsManagers. The name of the key pair could and should be different from the secret ID. For example, the instance key pair should include an incremental number also part of the corresponding secret ID.<\/p>\n<p>Consider that the number of Mac instances in an AWS account is limited and it&#8217;s convenient to refer to them using an index starting at 1. It&#8217;s good practice for the secret ID to also include a nonce as secrets with the same name cannot be recreated before the deletion period has elapsed, allowing frequent provisioning-decommissioning cycles.<\/p>\n<p>For the above reasons, EC2macConnector assumes the following formats are used:<\/p>\n<ul>\n<li>instance key pairs: <code>&lt;keypair_prefix&gt;_&lt;index_of_instance_in_fleet&gt;<\/code> e.g. <code>mac_instance_key_pair_5<\/code><\/li>\n<li>secret IDs: <code>&lt;secrets_prefix&gt;_&lt;index_of_instance_in_fleet&gt;_&lt;nonce&gt;<\/code> e.g. <code>private_key_mac_metal_5_dx9Wna73B<\/code><\/li>\n<\/ul>\n<h2 id=\"ec2macconnector-under-the-hood\">EC2macConnector Under the hood<\/h2>\n<p>The <code>configure<\/code> command:<\/p>\n<ul>\n<li>downloads the private keys in the <code>~\/.ssh<\/code> folder<\/li>\n<li>creates scripts to connect over SSH in <code>~\/.ec2macConnector\/&lt;region&gt;\/scripts<\/code><\/li>\n<li>creates vncloc files to connect over VNC in <code>~\/.ec2macConnector\/&lt;region&gt;\/vnclocs<\/code><\/li>\n<\/ul>\n<pre><code class=\"language-bash\">\u279c  .ec2macConnector tree ~\/.ssh\n\/Users\/alberto\/.ssh\n\u251c\u2500\u2500 mac_metal_1_i-08e4ffd8e9xxxxxxx\n\u251c\u2500\u2500 mac_metal_2_i-07bfff1f52xxxxxxx\n\u251c\u2500\u2500 mac_metal_3_i-020d680610xxxxxxx\n\u251c\u2500\u2500 mac_metal_4_i-08516ac980xxxxxxx\n\u251c\u2500\u2500 mac_metal_5_i-032bedaabexxxxxxx\n\u251c\u2500\u2500 config\n\u251c\u2500\u2500 known_hosts\n\u2514\u2500\u2500 ...<\/code><\/pre>\n<p>The <code>connect<\/code> command:<\/p>\n<ul>\n<li>runs the scripts (opens new shells in Terminal and connects to the instances over SSH)<\/li>\n<li>opens the vncloc files<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">\u279c  .ec2macConnector tree ~\/.ec2macConnector\n\/Users\/alberto\/.ec2macConnector\n\u2514\u2500\u2500 us-east-1\n    \u251c\u2500\u2500 scripts\n    \u2502\u00a0\u00a0 \u251c\u2500\u2500 connect_1.sh\n    \u2502\u00a0\u00a0 \u251c\u2500\u2500 connect_2.sh\n    \u2502\u00a0\u00a0 \u251c\u2500\u2500 connect_3.sh\n    \u2502\u00a0\u00a0 \u251c\u2500\u2500 connect_4.sh\n    \u2502\u00a0\u00a0 \u2514\u2500\u2500 connect_5.sh\n    \u2514\u2500\u2500 vnclocs\n        \u251c\u2500\u2500 connect_1.vncloc\n        \u251c\u2500\u2500 connect_2.vncloc\n        \u251c\u2500\u2500 connect_3.vncloc\n        \u251c\u2500\u2500 connect_4.vncloc\n        \u2514\u2500\u2500 connect_5.vncloc<\/code><\/pre>\n<\/div>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_1887\" class=\"pvc_stats total_only\" data-element-id=\"1887\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.0\" viewbox=\"0 0 502 315\" preserveaspectratio=\"xMidYMid meet\"><g transform=\"translate(0,332) scale(0.1,-0.1)\" fill=\"\" stroke=\"none\"><path d=\"M2394 3279 l-29 -30 -3 -207 c-2 -182 0 -211 15 -242 39 -76 157 -76 196 0 15 31 17 60 15 243 l-3 209 -33 29 c-26 23 -41 29 -80 29 -41 0 -53 -5 -78 -31z\"\/><path d=\"M3085 3251 c-45 -19 -58 -50 -96 -229 -47 -217 -49 -260 -13 -295 52 -53 146 -42 177 20 16 31 87 366 87 410 0 70 -86 122 -155 94z\"\/><path d=\"M1751 3234 c-13 -9 -29 -31 -37 -50 -12 -29 -10 -49 21 -204 19 -94 39 -189 45 -210 14 -50 54 -80 110 -80 34 0 48 6 76 34 21 21 34 44 34 59 0 14 -18 113 -40 219 -37 178 -43 195 -70 221 -36 32 -101 37 -139 11z\"\/><path d=\"M1163 3073 c-36 -7 -73 -59 -73 -102 0 -56 133 -378 171 -413 34 -32 83 -37 129 -13 70 36 67 87 -16 290 -86 209 -89 214 -129 231 -35 14 -42 15 -82 7z\"\/><path d=\"M3689 3066 c-15 -9 -33 -30 -42 -48 -48 -103 -147 -355 -147 -375 0 -98 131 -148 192 -74 13 15 57 108 97 206 80 196 84 226 37 273 -30 30 -99 39 -137 18z\"\/><path d=\"M583 2784 c-38 -19 -67 -74 -58 -113 9 -42 211 -354 242 -373 16 -10 45 -18 66 -18 51 0 107 52 107 100 0 39 -1 41 -124 234 -80 126 -108 162 -133 173 -41 17 -61 16 -100 -3z\"\/><path d=\"M4250 2784 c-14 -9 -74 -91 -133 -183 -95 -150 -107 -173 -107 -213 0 -55 33 -94 87 -104 67 -13 90 8 211 198 130 202 137 225 78 284 -27 27 -42 34 -72 34 -22 0 -50 -8 -64 -16z\"\/><path d=\"M2275 2693 c-553 -48 -1095 -270 -1585 -649 -135 -104 -459 -423 -483 -476 -23 -49 -22 -139 2 -186 73 -142 361 -457 571 -626 285 -228 642 -407 990 -497 242 -63 336 -73 660 -74 310 0 370 5 595 52 535 111 1045 392 1455 803 122 121 250 273 275 326 19 41 19 137 0 174 -41 79 -309 363 -465 492 -447 370 -946 591 -1479 653 -113 14 -422 18 -536 8z m395 -428 c171 -34 330 -124 456 -258 112 -119 167 -219 211 -378 27 -96 24 -300 -5 -401 -72 -255 -236 -447 -474 -557 -132 -62 -201 -76 -368 -76 -167 0 -236 14 -368 76 -213 98 -373 271 -451 485 -162 444 86 934 547 1084 153 49 292 57 452 25z m909 -232 c222 -123 408 -262 593 -441 76 -74 138 -139 138 -144 0 -16 -233 -242 -330 -319 -155 -123 -309 -223 -461 -299 l-81 -41 32 46 c18 26 49 83 70 128 143 306 141 649 -6 957 -25 52 -61 116 -79 142 l-34 47 45 -20 c26 -10 76 -36 113 -56z m-2057 25 c-40 -58 -105 -190 -130 -263 -110 -324 -59 -707 132 -981 25 -35 42 -64 37 -64 -19 0 -241 119 -326 174 -188 122 -406 314 -532 468 l-58 71 108 103 c185 178 428 349 672 473 66 33 121 60 123 61 2 0 -10 -19 -26 -42z\"\/><path d=\"M2375 1950 c-198 -44 -350 -190 -395 -379 -18 -76 -8 -221 19 -290 114 -284 457 -406 731 -260 98 52 188 154 231 260 27 69 37 214 19 290 -38 163 -166 304 -326 360 -67 23 -215 33 -279 19z\"\/><\/g><\/svg><\/i> <img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/i0.wp.com\/dev95.site\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif?resize=16%2C16&#038;ssl=1\" border=\"0\" \/><\/p>\n<div class=\"pvc_clear\"><\/div>","protected":false},"excerpt":{"rendered":"<p>Overview Amazon Web Services (AWS) provides EC2 Mac instances commonly used as CI workers. Configuring them can be either a manual or an automated process, depending on the DevOps and Platform Engineering experience in your company. No matter what process<\/p>\n<div class=\"hosteria-entry-more\"><a href=\"https:\/\/dev95.site\/ar\/easy-connection-to-aws-mac-instances-with-ec2macconnector\/\" class=\"no-underline font-light  group-hover:text-primary-800 dark:group-hover:text-primary-300 py-1\">Read more &gt;&gt;&gt;<\/a><\/div>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_1887\" class=\"pvc_stats total_only\" data-element-id=\"1887\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.0\" viewbox=\"0 0 502 315\" preserveaspectratio=\"xMidYMid meet\"><g transform=\"translate(0,332) scale(0.1,-0.1)\" fill=\"\" stroke=\"none\"><path d=\"M2394 3279 l-29 -30 -3 -207 c-2 -182 0 -211 15 -242 39 -76 157 -76 196 0 15 31 17 60 15 243 l-3 209 -33 29 c-26 23 -41 29 -80 29 -41 0 -53 -5 -78 -31z\"\/><path d=\"M3085 3251 c-45 -19 -58 -50 -96 -229 -47 -217 -49 -260 -13 -295 52 -53 146 -42 177 20 16 31 87 366 87 410 0 70 -86 122 -155 94z\"\/><path d=\"M1751 3234 c-13 -9 -29 -31 -37 -50 -12 -29 -10 -49 21 -204 19 -94 39 -189 45 -210 14 -50 54 -80 110 -80 34 0 48 6 76 34 21 21 34 44 34 59 0 14 -18 113 -40 219 -37 178 -43 195 -70 221 -36 32 -101 37 -139 11z\"\/><path d=\"M1163 3073 c-36 -7 -73 -59 -73 -102 0 -56 133 -378 171 -413 34 -32 83 -37 129 -13 70 36 67 87 -16 290 -86 209 -89 214 -129 231 -35 14 -42 15 -82 7z\"\/><path d=\"M3689 3066 c-15 -9 -33 -30 -42 -48 -48 -103 -147 -355 -147 -375 0 -98 131 -148 192 -74 13 15 57 108 97 206 80 196 84 226 37 273 -30 30 -99 39 -137 18z\"\/><path d=\"M583 2784 c-38 -19 -67 -74 -58 -113 9 -42 211 -354 242 -373 16 -10 45 -18 66 -18 51 0 107 52 107 100 0 39 -1 41 -124 234 -80 126 -108 162 -133 173 -41 17 -61 16 -100 -3z\"\/><path d=\"M4250 2784 c-14 -9 -74 -91 -133 -183 -95 -150 -107 -173 -107 -213 0 -55 33 -94 87 -104 67 -13 90 8 211 198 130 202 137 225 78 284 -27 27 -42 34 -72 34 -22 0 -50 -8 -64 -16z\"\/><path d=\"M2275 2693 c-553 -48 -1095 -270 -1585 -649 -135 -104 -459 -423 -483 -476 -23 -49 -22 -139 2 -186 73 -142 361 -457 571 -626 285 -228 642 -407 990 -497 242 -63 336 -73 660 -74 310 0 370 5 595 52 535 111 1045 392 1455 803 122 121 250 273 275 326 19 41 19 137 0 174 -41 79 -309 363 -465 492 -447 370 -946 591 -1479 653 -113 14 -422 18 -536 8z m395 -428 c171 -34 330 -124 456 -258 112 -119 167 -219 211 -378 27 -96 24 -300 -5 -401 -72 -255 -236 -447 -474 -557 -132 -62 -201 -76 -368 -76 -167 0 -236 14 -368 76 -213 98 -373 271 -451 485 -162 444 86 934 547 1084 153 49 292 57 452 25z m909 -232 c222 -123 408 -262 593 -441 76 -74 138 -139 138 -144 0 -16 -233 -242 -330 -319 -155 -123 -309 -223 -461 -299 l-81 -41 32 46 c18 26 49 83 70 128 143 306 141 649 -6 957 -25 52 -61 116 -79 142 l-34 47 45 -20 c26 -10 76 -36 113 -56z m-2057 25 c-40 -58 -105 -190 -130 -263 -110 -324 -59 -707 132 -981 25 -35 42 -64 37 -64 -19 0 -241 119 -326 174 -188 122 -406 314 -532 468 l-58 71 108 103 c185 178 428 349 672 473 66 33 121 60 123 61 2 0 -10 -19 -26 -42z\"\/><path d=\"M2375 1950 c-198 -44 -350 -190 -395 -379 -18 -76 -8 -221 19 -290 114 -284 457 -406 731 -260 98 52 188 154 231 260 27 69 37 214 19 290 -38 163 -166 304 -326 360 -67 23 -215 33 -279 19z\"\/><\/g><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/dev95.site\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=\"0\" \/><\/p>\n<div class=\"pvc_clear\"><\/div>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fp_fajr_begins":"","fp_fajr_iqamah":"","fp_dhuhr_begins":"","fp_dhuhr_iqamah":"","fp_asr_begins":"","fp_asr_iqamah":"","fp_maghrib_begins":"","fp_maghrib_iqamah":"","fp_isha_begins":"","fp_isha_iqamah":"","fp_midnight":"","fp_midnight_name":"","fp_sunrise":"","fp_single_prayer_begins_title":"","fp_single_prayer_iqamah_title":"","fp_prayer_times_for_today":"","fp_hijra_date":"","fp_fajr_name":"","fp_dhuhr_name":"","fp_asr_name":"","fp_maghrib_name":"","fp_isha_name":"","fp_sunrise_name":"","fp_currentDate":"","fp_current_time":"","fp_current_title":"","fp_current_location":"","fp_masjid_name":"","fp_prayer_title":"","fp_next_prayer_iqamah_time":"","fp_next_prayer_iqamah_title":"","fp_next_prayer_begins_time":"","fp_next_prayer_begins_title":"","fp_next_prayer_title":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[37],"tags":[],"class_list":["post-1887","post","type-post","status-publish","format-standard","hentry","category-posts"],"a3_pvc":{"activated":true,"total_views":1,"today_views":1},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Easy connection to AWS Mac instances with EC2macConnector - Dev95<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dev95.site\/ar\/easy-connection-to-aws-mac-instances-with-ec2macconnector\/\" \/>\n<meta property=\"og:locale\" content=\"ar_AR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Easy connection to AWS Mac instances with EC2macConnector - Dev95\" \/>\n<meta property=\"og:description\" content=\"Overview Amazon Web Services (AWS) provides EC2 Mac instances commonly used as CI workers. Configuring them can be either a manual or an automated process, depending on the DevOps and Platform Engineering experience in your company. No matter what processRead more &gt;&gt;&gt;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dev95.site\/ar\/easy-connection-to-aws-mac-instances-with-ec2macconnector\/\" \/>\n<meta property=\"og:site_name\" content=\"Dev95\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-05T13:54:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/storage.ghost.io\/c\/ae\/f4\/aef4d625-32a2-417b-86f4-22c70a9b47a1\/content\/images\/2023\/07\/MacStadium.webp\" \/>\n<meta name=\"author\" content=\"dev95\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u0643\u064f\u062a\u0628 \u0628\u0648\u0627\u0633\u0637\u0629\" \/>\n\t<meta name=\"twitter:data1\" content=\"dev95\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u0648\u0642\u062a \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u064f\u0642\u062f\u0651\u0631\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 \u062f\u0642\u0627\u0626\u0642\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/dev95.site\\\/easy-connection-to-aws-mac-instances-with-ec2macconnector\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/easy-connection-to-aws-mac-instances-with-ec2macconnector\\\/\"},\"author\":{\"name\":\"dev95\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/person\\\/b807805ffe2916206b04d0938bce0298\"},\"headline\":\"Easy connection to AWS Mac instances with EC2macConnector\",\"datePublished\":\"2023-07-05T13:54:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/easy-connection-to-aws-mac-instances-with-ec2macconnector\\\/\"},\"wordCount\":648,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/easy-connection-to-aws-mac-instances-with-ec2macconnector\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/storage.ghost.io\\\/c\\\/ae\\\/f4\\\/aef4d625-32a2-417b-86f4-22c70a9b47a1\\\/content\\\/images\\\/2023\\\/07\\\/MacStadium.webp\",\"articleSection\":[\"Posts\"],\"inLanguage\":\"ar\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/dev95.site\\\/easy-connection-to-aws-mac-instances-with-ec2macconnector\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/dev95.site\\\/easy-connection-to-aws-mac-instances-with-ec2macconnector\\\/\",\"url\":\"https:\\\/\\\/dev95.site\\\/easy-connection-to-aws-mac-instances-with-ec2macconnector\\\/\",\"name\":\"Easy connection to AWS Mac instances with EC2macConnector - Dev95\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/easy-connection-to-aws-mac-instances-with-ec2macconnector\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/easy-connection-to-aws-mac-instances-with-ec2macconnector\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/storage.ghost.io\\\/c\\\/ae\\\/f4\\\/aef4d625-32a2-417b-86f4-22c70a9b47a1\\\/content\\\/images\\\/2023\\\/07\\\/MacStadium.webp\",\"datePublished\":\"2023-07-05T13:54:56+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/easy-connection-to-aws-mac-instances-with-ec2macconnector\\\/#breadcrumb\"},\"inLanguage\":\"ar\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/dev95.site\\\/easy-connection-to-aws-mac-instances-with-ec2macconnector\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/dev95.site\\\/easy-connection-to-aws-mac-instances-with-ec2macconnector\\\/#primaryimage\",\"url\":\"https:\\\/\\\/storage.ghost.io\\\/c\\\/ae\\\/f4\\\/aef4d625-32a2-417b-86f4-22c70a9b47a1\\\/content\\\/images\\\/2023\\\/07\\\/MacStadium.webp\",\"contentUrl\":\"https:\\\/\\\/storage.ghost.io\\\/c\\\/ae\\\/f4\\\/aef4d625-32a2-417b-86f4-22c70a9b47a1\\\/content\\\/images\\\/2023\\\/07\\\/MacStadium.webp\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/dev95.site\\\/easy-connection-to-aws-mac-instances-with-ec2macconnector\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/dev95.site\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Easy connection to AWS Mac instances with EC2macConnector\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#website\",\"url\":\"https:\\\/\\\/dev95.site\\\/\",\"name\":\"Dev95\",\"description\":\"A comprehensive platform for data and knowledge, delivering reliable content that meets the aspirations of readers and enthusiasts.\",\"publisher\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/dev95.site\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ar\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#organization\",\"name\":\"Dev95\",\"url\":\"https:\\\/\\\/dev95.site\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/dev95.site\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/rbrrbr-6.png?fit=512%2C512&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/dev95.site\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/rbrrbr-6.png?fit=512%2C512&ssl=1\",\"width\":512,\"height\":512,\"caption\":\"Dev95\"},\"image\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/person\\\/b807805ffe2916206b04d0938bce0298\",\"name\":\"dev95\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g\",\"caption\":\"dev95\"},\"url\":\"https:\\\/\\\/dev95.site\\\/ar\\\/author\\\/mohammad\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Easy connection to AWS Mac instances with EC2macConnector - Dev95","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:\/\/dev95.site\/ar\/easy-connection-to-aws-mac-instances-with-ec2macconnector\/","og_locale":"ar_AR","og_type":"article","og_title":"Easy connection to AWS Mac instances with EC2macConnector - Dev95","og_description":"Overview Amazon Web Services (AWS) provides EC2 Mac instances commonly used as CI workers. Configuring them can be either a manual or an automated process, depending on the DevOps and Platform Engineering experience in your company. No matter what processRead more &gt;&gt;&gt;","og_url":"https:\/\/dev95.site\/ar\/easy-connection-to-aws-mac-instances-with-ec2macconnector\/","og_site_name":"Dev95","article_published_time":"2023-07-05T13:54:56+00:00","og_image":[{"url":"https:\/\/storage.ghost.io\/c\/ae\/f4\/aef4d625-32a2-417b-86f4-22c70a9b47a1\/content\/images\/2023\/07\/MacStadium.webp","type":"","width":"","height":""}],"author":"dev95","twitter_card":"summary_large_image","twitter_misc":{"\u0643\u064f\u062a\u0628 \u0628\u0648\u0627\u0633\u0637\u0629":"dev95","\u0648\u0642\u062a \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u064f\u0642\u062f\u0651\u0631":"4 \u062f\u0642\u0627\u0626\u0642"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dev95.site\/easy-connection-to-aws-mac-instances-with-ec2macconnector\/#article","isPartOf":{"@id":"https:\/\/dev95.site\/easy-connection-to-aws-mac-instances-with-ec2macconnector\/"},"author":{"name":"dev95","@id":"https:\/\/dev95.site\/#\/schema\/person\/b807805ffe2916206b04d0938bce0298"},"headline":"Easy connection to AWS Mac instances with EC2macConnector","datePublished":"2023-07-05T13:54:56+00:00","mainEntityOfPage":{"@id":"https:\/\/dev95.site\/easy-connection-to-aws-mac-instances-with-ec2macconnector\/"},"wordCount":648,"commentCount":0,"publisher":{"@id":"https:\/\/dev95.site\/#organization"},"image":{"@id":"https:\/\/dev95.site\/easy-connection-to-aws-mac-instances-with-ec2macconnector\/#primaryimage"},"thumbnailUrl":"https:\/\/storage.ghost.io\/c\/ae\/f4\/aef4d625-32a2-417b-86f4-22c70a9b47a1\/content\/images\/2023\/07\/MacStadium.webp","articleSection":["Posts"],"inLanguage":"ar","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/dev95.site\/easy-connection-to-aws-mac-instances-with-ec2macconnector\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/dev95.site\/easy-connection-to-aws-mac-instances-with-ec2macconnector\/","url":"https:\/\/dev95.site\/easy-connection-to-aws-mac-instances-with-ec2macconnector\/","name":"Easy connection to AWS Mac instances with EC2macConnector - Dev95","isPartOf":{"@id":"https:\/\/dev95.site\/#website"},"primaryImageOfPage":{"@id":"https:\/\/dev95.site\/easy-connection-to-aws-mac-instances-with-ec2macconnector\/#primaryimage"},"image":{"@id":"https:\/\/dev95.site\/easy-connection-to-aws-mac-instances-with-ec2macconnector\/#primaryimage"},"thumbnailUrl":"https:\/\/storage.ghost.io\/c\/ae\/f4\/aef4d625-32a2-417b-86f4-22c70a9b47a1\/content\/images\/2023\/07\/MacStadium.webp","datePublished":"2023-07-05T13:54:56+00:00","breadcrumb":{"@id":"https:\/\/dev95.site\/easy-connection-to-aws-mac-instances-with-ec2macconnector\/#breadcrumb"},"inLanguage":"ar","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dev95.site\/easy-connection-to-aws-mac-instances-with-ec2macconnector\/"]}]},{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/dev95.site\/easy-connection-to-aws-mac-instances-with-ec2macconnector\/#primaryimage","url":"https:\/\/storage.ghost.io\/c\/ae\/f4\/aef4d625-32a2-417b-86f4-22c70a9b47a1\/content\/images\/2023\/07\/MacStadium.webp","contentUrl":"https:\/\/storage.ghost.io\/c\/ae\/f4\/aef4d625-32a2-417b-86f4-22c70a9b47a1\/content\/images\/2023\/07\/MacStadium.webp"},{"@type":"BreadcrumbList","@id":"https:\/\/dev95.site\/easy-connection-to-aws-mac-instances-with-ec2macconnector\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dev95.site\/"},{"@type":"ListItem","position":2,"name":"Easy connection to AWS Mac instances with EC2macConnector"}]},{"@type":"WebSite","@id":"https:\/\/dev95.site\/#website","url":"https:\/\/dev95.site\/","name":"Dev95","description":"A comprehensive platform for data and knowledge, delivering reliable content that meets the aspirations of readers and enthusiasts.","publisher":{"@id":"https:\/\/dev95.site\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dev95.site\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ar"},{"@type":"Organization","@id":"https:\/\/dev95.site\/#organization","name":"Dev95","url":"https:\/\/dev95.site\/","logo":{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/dev95.site\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/dev95.site\/wp-content\/uploads\/2026\/07\/rbrrbr-6.png?fit=512%2C512&ssl=1","contentUrl":"https:\/\/i0.wp.com\/dev95.site\/wp-content\/uploads\/2026\/07\/rbrrbr-6.png?fit=512%2C512&ssl=1","width":512,"height":512,"caption":"Dev95"},"image":{"@id":"https:\/\/dev95.site\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/dev95.site\/#\/schema\/person\/b807805ffe2916206b04d0938bce0298","name":"dev95","image":{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/secure.gravatar.com\/avatar\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g","caption":"dev95"},"url":"https:\/\/dev95.site\/ar\/author\/mohammad\/"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/posts\/1887","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/comments?post=1887"}],"version-history":[{"count":0,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/posts\/1887\/revisions"}],"wp:attachment":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/media?parent=1887"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/categories?post=1887"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/tags?post=1887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}