diff --git a/cfg_checker/cli/arguments.py b/cfg_checker/cli/arguments.py
index 4442324..28f3a04 100644
--- a/cfg_checker/cli/arguments.py
+++ b/cfg_checker/cli/arguments.py
@@ -26,9 +26,15 @@
         help="Use sudo for getting salt creds"
     )
     parser.add_argument(
+        '--ssh-direct',
+        action='store_true', default=False,
+        help="Force SSH to do direct connection instead of port forwarding"
+    )
+
+    parser.add_argument(
         '--force-no-key',
         action='store_true', default=False,
-        help="Use sudo for getting salt creds"
+        help="Force SSH to login with no key"
     )
     parser.add_argument(
         '--skip-nodes',
diff --git a/cfg_checker/common/const.py b/cfg_checker/common/const.py
index d17db08..a16011f 100644
--- a/cfg_checker/common/const.py
+++ b/cfg_checker/common/const.py
@@ -81,6 +81,21 @@
 }
 
 ubuntu_releases = ["trusty", "xenial", "ubuntu", "bionic", "focal"]
+kaas_ubuntu_active = [
+    "ubuntu-0.0.8",
+    "ubuntu-0.0.7",
+    "ubuntu-2020-07-30-013349",
+    "ubuntu-2020-12-14-013755",
+    "ubuntu-2021-05-27-013023"
+]
+mcp_active_tags = [
+    "2019.2.0",
+    "2019.2.10",
+    "2019.2.11",
+    "2019.2.12",
+    "2019.2.13",
+    "2019.2.14",
+]
 all_arch = ["amd64"]
 repo_types = {
     "main": "Officially supported software",
diff --git a/cfg_checker/common/settings.py b/cfg_checker/common/settings.py
index 4b7b3f5..c681114 100644
--- a/cfg_checker/common/settings.py
+++ b/cfg_checker/common/settings.py
@@ -328,6 +328,7 @@
         """Base configuration class. Only values that are common for all scripts
         """
         self.ssh_uses_sudo = args.sudo
+        self.ssh_direct = args.ssh_direct
         self.kube_config_path = args.kube_config
         self.debug = args.debug
         self.insecure = args.insecure
diff --git a/cfg_checker/modules/packages/repos.py b/cfg_checker/modules/packages/repos.py
index 1a040ff..6853a8f 100644
--- a/cfg_checker/modules/packages/repos.py
+++ b/cfg_checker/modules/packages/repos.py
@@ -12,6 +12,8 @@
 from cfg_checker.common.const import _repos_info_archive
 from cfg_checker.common.const import _repos_versions_archive
 from cfg_checker.common.const import ubuntu_releases
+from cfg_checker.common.const import kaas_ubuntu_active
+from cfg_checker.common.const import mcp_active_tags as active_tags
 from cfg_checker.common.file_utils import ensure_folder_exists
 from cfg_checker.common.file_utils import get_gzipped_file
 from cfg_checker.common.settings import pkg_dir
@@ -218,14 +220,27 @@
                 _tags.remove('hotfix')
             if "update" in _tags:
                 _tags.remove('update')
+            # Filter out not active tags
+            logger_cli.info("Active tags for mcp: {}".format(
+                ", ".join(active_tags)
+            ))
+            logger_cli.info("Active kaas ubuntu repos: {}".format(
+                ", ".join(kaas_ubuntu_active)
+            ))
+            _active_tags = [t for t in _tags if t in active_tags]
+
             # search tags in subfolders
             _h_tags, _ = self._ls_repo_page(base_url + 'hotfix')
             _u_tags, _ = self._ls_repo_page(base_url + 'update')
-            _tags.extend([t for t in _h_tags if t not in _tags])
-            _tags.extend([t for t in _u_tags if t not in _tags])
-            _progress = Progress(len(_tags))
+            _active_tags.extend(
+                [t for t in _h_tags if t not in _tags and t in active_tags]
+            )
+            _active_tags.extend(
+                [t for t in _u_tags if t not in _tags and t in active_tags]
+            )
+            _progress = Progress(len(_active_tags))
             _index = 0
-            for _tag in _tags:
+            for _tag in _active_tags:
                 _repos.update(self._find_tag(_tag, base_url))
                 _repos.update(self._find_tag(_tag, base_url, label="hotfix"))
                 _repos.update(self._find_tag(_tag, base_url, label="update"))
@@ -237,7 +252,7 @@
         for _label in _repos.keys():
             logger_cli.info("-> processing tag '{}'".format(_label))
             _name = _label + ".json"
-            if _repotgz.has_file(_name):
+            if _repotgz.has_file(_name) and not tag:
                 logger_cli.info(
                     "-> skipping, '{}' already has '{}'".format(
                         _repos_info_archive,
@@ -271,7 +286,7 @@
                 )
 
                 # Searching Package collections
-                if _stag in ubuntu_releases or _stag.startswith("ubuntu-2020"):
+                if _stag in ubuntu_releases or _stag in kaas_ubuntu_active:
                     # if stag is the release, this is all packages
                     _repo["all"][_stag] = []
                     _repo["all"]["url"] = _n_url(_u)
@@ -572,7 +587,7 @@
         _other_repos = 0
         for _c, _d in _info.items():
             for _ur, _l in _d.items():
-                if _ur in ubuntu_releases or _ur.startswith("ubuntu-2020"):
+                if _ur in ubuntu_releases or _ur in kaas_ubuntu_active:
                     _ubuntu_package_repos += len(_l)
                 elif _ur != 'url':
                     _other_repos += len(_l)
diff --git a/cfg_checker/nodes.py b/cfg_checker/nodes.py
index e6943a6..1780b60 100644
--- a/cfg_checker/nodes.py
+++ b/cfg_checker/nodes.py
@@ -198,7 +198,6 @@
             )
             # TODO: Use domain with biggest node count by default
             # or force it via config option
-            
         else:
             self.domain = _domains[0]
         logger_cli.info("-> {} nodes inactive".format(len(self.skip_list)))
@@ -652,7 +651,7 @@
         _k = self.env_config.kube_node_keypath
         _h = self.nodes[node]['internalip']
         _p = 22
-        if self.kube.is_local:
+        if self.kube.is_local or self.kube.config.ssh_direct:
             return None, self._get_ssh_shell(_h, _u, _k, _p, silent, piped)
         else:
             _fh = "localhost"
diff --git a/versions/repo.info.tgz b/versions/repo.info.tgz
index 8ea2f84..2bbc28d 100644
--- a/versions/repo.info.tgz
+++ b/versions/repo.info.tgz
Binary files differ
diff --git a/versions/repo.versions.tgz b/versions/repo.versions.tgz
index 56206fd..39f188d 100644
--- a/versions/repo.versions.tgz
+++ b/versions/repo.versions.tgz
Binary files differ
