{"id":18070095,"url":"https://github.com/polatengin/kiev","last_synced_at":"2026-05-01T13:31:57.831Z","repository":{"id":144742161,"uuid":"198708788","full_name":"polatengin/kiev","owner":"polatengin","description":"SSH Configuration Helper PowerShell script","archived":false,"fork":false,"pushed_at":"2020-04-30T07:09:29.000Z","size":147,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-11T13:47:45.452Z","etag":null,"topics":["azure","configuration","helper","powershell","ssh","vm"],"latest_commit_sha":null,"homepage":"","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/polatengin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-24T20:57:15.000Z","updated_at":"2020-01-16T18:04:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"3985f45d-8e52-4e94-9af4-14eedf7829e4","html_url":"https://github.com/polatengin/kiev","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polatengin%2Fkiev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polatengin%2Fkiev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polatengin%2Fkiev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polatengin%2Fkiev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/polatengin","download_url":"https://codeload.github.com/polatengin/kiev/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247369927,"owners_count":20927927,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azure","configuration","helper","powershell","ssh","vm"],"created_at":"2024-10-31T08:24:05.021Z","updated_at":"2026-05-01T13:31:52.799Z","avatar_url":"https://github.com/polatengin.png","language":"PowerShell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SSH Configuration Helper\n\nIn projects, we usually need to open _SSH connections_ to remote systems.\n\nFor example, we can open an _SSH connection_ to a _remote machine_ from within the [Visual Studio Code](https://code.visualstudio.com) (you need to have [Remote Development](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) extension pack) and develop the project inside of the remote machine.\n\nThis scenario allows us to have a _thin machine_, but still, develop the project with a much more powerful machine with lots of _RAM_, _CPU_ and even _GPU_ resources on [Azure](https://azure.microsoft.com).\n\nBut to do that, we need to edit [SSH Configuration file](https://www.ssh.com/ssh/config/)\n\nWe can find [SSH Configuration file](https://www.ssh.com/ssh/config/) in _~/.ssh/config_ or _C:\\Users\\\\{USER}\\\\.ssh\\config_ path\n\n## Configuration Helper\n\nYou can use [Configuration Helper](./ssh_config.ps1) _PowerShell Script_ to make it easier to edit [SSH Configuration file](https://www.ssh.com/ssh/config/)\n\n### Menu\n\nReference: [ssh_config.ps1#L40](./ssh_config.ps1#L40)\n\nYou can choose 1 of the following Menu Items\n\n* [Login Azure](#login-to-azure)\n* [List VM Machines](#list-vm-machines)\n* [Start VM Machine(s)](#start-vm-machines)\n* [Stop VM Machine(s)](#stop-vm-machines)\n* [Clean SSH Config File](#clean-ssh-configuration-file)\n* [Add SSH Config for Azure VMs](#add-ssh-config-for-azure-vms)\n* [Help](#help)\n* [Quit](./ssh_config.ps1#L71)\n\n![SSH Configuration Helper Menu](./screen-shot-0.png \"SSH Configuration Helper Menu\")\n\n### Login to Azure\n\nReference: [ssh_config.ps1#L77](./ssh_config.ps1#L77)\n\nYou can login to [Azure Portal](https://portal.azure.com) via [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/get-started-with-azure-cli) to access to the _VMs_ running on [Azure](https://portal.azure.com).\n\nIt's checking if the user is already logged-in to the [Azure Portal](https://portal.azure.com), if not, it launches a new browser page to login to the [Azure Portal](https://portal.azure.com).\n\nIf only 1 subscription is available for the user, it selects that subscription, if there is more than 1 subscription, it asks the user to choose one of them, and, it sets that subscription as _Default_.\n\nSo, all the upcoming commands will be executed on selected subscription, such as, getting the list of VMs, etc.\n\n### List VM Machines\n\nReference: [ssh_config.ps1#L108](./ssh_config.ps1#L108)\n\nIt's getting all the _VMs_ on _Azure Subscription_ and list them with _Names_ and _Power States_\n\n### Start VM Machine(s)\n\nReference: [ssh_config.ps1#L120](./ssh_config.ps1#L120)\n\nIt's getting all the _VMs_ on _Azure Subscription_, list them with checkboxes, selected VMs will be started\n\n### Stop VM Machine(s)\n\nReference: [ssh_config.ps1#L133](./ssh_config.ps1#L133)\n\nIt's getting all the _VMs_ on _Azure Subscription_, list them with checkboxes, selected VMs will be stopped\n\n### Clean SSH Configuration File\n\nReference: [ssh_config.ps1#L146](./ssh_config.ps1#L146)\n\nIt parse the [SSH Configuration file](https://www.ssh.com/ssh/config/) and creates a [ConfigItem](ssh_config.ps1#L3) array.\n\nLists [ConfigItem](ssh_config.ps1#L3) array with checkboxes, selected [ConfigItem](ssh_config.ps1#L3)s will be preserved, others will be removed from the [SSH Configuration file](https://www.ssh.com/ssh/config/)\n\n### Add SSH Config for Azure VMs\n\nReference: [ssh_config.ps1#L232](./ssh_config.ps1#L232)\n\nIt gets all the _VMs_ on the _Azure Subscription_, lists them with checkboxes, for the selected VMs a new [ConfigItem](ssh_config.ps1#L3) element will be created.\n\nAll the [ConfigItem](ssh_config.ps1#L3)s will be appended to the [SSH Configuration file](https://www.ssh.com/ssh/config/)\n\n### Help\n\nReference: [ssh_config.ps1#L281](./ssh_config.ps1#L281)\n\n![SSH Configuration Helper](./screen-shot-1.png \"SSH Configuration Helper\")\n\n## References\n\n[Write-Menu](https://github.com/QuietusPlus/Write-Menu) function for _PowerShell_ (created by [QuietusPlus](https://github.com/QuietusPlus)) helped a-lot during the development of this script.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolatengin%2Fkiev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpolatengin%2Fkiev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolatengin%2Fkiev/lists"}