diff --git a/wally/ssh_utils.py b/wally/ssh_utils.py
index 24fc178..efb67b3 100644
--- a/wally/ssh_utils.py
+++ b/wally/ssh_utils.py
@@ -1,6 +1,7 @@
 import re
+import yaml
 import getpass
-from typing import List
+from typing import List, Dict, Any
 
 
 from .common_types import IPAddr
@@ -41,8 +42,10 @@
         uri_reg_exprs.append(templ.format(**re_dct))
 
 
-class ConnCreds:
-    def __init__(self, host: str, user: str, passwd: str = None, port: int = 22,
+class ConnCreds(yaml.YAMLObject):
+    yaml_tag = '!ConnCreds'
+
+    def __init__(self, host: str, user: str, passwd: str = None, port: str = '22',
                  key_file: str = None, key: bytes = None) -> None:
         self.user = user
         self.passwd = passwd
@@ -56,6 +59,22 @@
     def __repr__(self) -> str:
         return str(self)
 
+    @classmethod
+    def to_yaml(cls, dumper: Any, data: 'ConnCreds') -> Any:
+        dict_representation = {
+            'user': data.user,
+            'host': data.addr.host,
+            'port': data.addr.port,
+            'passwd': data.passwd,
+            'key_file': data.key_file
+        }
+        return dumper.represent_mapping(data.yaml_tag, dict_representation)
+
+    @classmethod
+    def from_yaml(cls, loader: Any, node: Any) -> 'ConnCreds':
+        dct = loader.construct_mapping(node)
+        return cls(**dct)
+
 
 def parse_ssh_uri(uri: str) -> ConnCreds:
     """Parse ssh connection URL from one of following form
@@ -69,9 +88,9 @@
     for rr in URIsNamespace.uri_reg_exprs:
         rrm = re.match(rr, uri)
         if rrm is not None:
-            params = {"user": getpass.getuser()}
+            params = {"user": getpass.getuser()}  # type: Dict[str, str]
             params.update(rrm.groupdict())
-            return ConnCreds(**params)
+            return ConnCreds(**params)  # type: ignore
 
     raise ValueError("Can't parse {0!r} as ssh uri value".format(uri))
 
