diff --git a/novaclient/tests/v1_1/fakes.py b/novaclient/tests/v1_1/fakes.py
index 7649b4756..9f669bacf 100644
--- a/novaclient/tests/v1_1/fakes.py
+++ b/novaclient/tests/v1_1/fakes.py
@@ -430,6 +430,16 @@ class FakeHTTPClient(base_client.HTTPClient):
     def delete_servers_uuid4_metadata_key1(self, **kw):
         return (200, {}, {'data': 'Fake diagnostics'})
 
+    def get_servers_1234_os_security_groups(self, **kw):
+        return (200, {}, {
+            "security_groups": [{
+                'id': 1,
+                'name': 'securitygroup1',
+                'description': 'FAKE_SECURITY_GROUP',
+                'tenant_id': '4ffc664c198e435e9853f2538fbcd7a7',
+                'rules': []}]
+        })
+
     #
     # Server Addresses
     #
diff --git a/novaclient/tests/v1_1/test_servers.py b/novaclient/tests/v1_1/test_servers.py
index 0dd206043..a567f9c58 100644
--- a/novaclient/tests/v1_1/test_servers.py
+++ b/novaclient/tests/v1_1/test_servers.py
@@ -501,6 +501,11 @@ class ServersTest(utils.TestCase):
         cs.servers.remove_security_group(s, 'oldsg')
         cs.assert_called('POST', '/servers/1234/action')
 
+    def test_list_security_group(self):
+        s = cs.servers.get(1234)
+        s.list_security_group()
+        cs.assert_called('GET', '/servers/1234/os-security-groups')
+
     def test_evacuate(self):
         s = cs.servers.get(1234)
         s.evacuate('fake_target_host', 'True')
diff --git a/novaclient/tests/v1_1/test_shell.py b/novaclient/tests/v1_1/test_shell.py
index be168d0d5..1542c34d6 100644
--- a/novaclient/tests/v1_1/test_shell.py
+++ b/novaclient/tests/v1_1/test_shell.py
@@ -1545,6 +1545,10 @@ class ShellTest(utils.TestCase):
         self.assert_called('POST', '/servers/1234/action',
                            {'removeSecurityGroup': {'name': 'testgroup'}})
 
+    def test_server_security_group_list(self):
+        self.run_command('list-secgroup 1234')
+        self.assert_called('GET', '/servers/1234/os-security-groups')
+
     def test_interface_list(self):
         self.run_command('interface-list 1234')
         self.assert_called('GET', '/servers/1234/os-interface')
diff --git a/novaclient/v1_1/servers.py b/novaclient/v1_1/servers.py
index e214d5f34..36748907d 100644
--- a/novaclient/v1_1/servers.py
+++ b/novaclient/v1_1/servers.py
@@ -24,7 +24,7 @@ import six
 from novaclient import base
 from novaclient import crypto
 from novaclient.openstack.common.py3kcompat import urlutils
-
+from novaclient.v1_1.security_groups import SecurityGroup
 
 REBOOT_SOFT, REBOOT_HARD = 'SOFT', 'HARD'
 
@@ -321,6 +321,12 @@ class Server(base.Resource):
         """
         self.manager.remove_security_group(self, security_group)
 
+    def list_security_group(self):
+        """
+        List security group(s) of an instance.
+        """
+        return self.manager.list_security_group(self)
+
     def evacuate(self, host, on_shared_storage, password=None):
         """
         Evacuate an instance from failed host to specified host.
@@ -851,6 +857,16 @@ class ServerManager(base.BootingManagerWithFind):
         """
         self._action('removeSecurityGroup', server, {'name': security_group})
 
+    def list_security_group(self, server):
+        """
+        List Security Group(s) of an instance
+
+        :param server: ID of the instance.
+
+        """
+        return self._list('/servers/%s/os-security-groups' %
+                          base.getid(server), 'security_groups', SecurityGroup)
+
     def evacuate(self, server, host, on_shared_storage, password=None):
         """
         Evacuate a server instance.
diff --git a/novaclient/v1_1/shell.py b/novaclient/v1_1/shell.py
index a6ba50e4a..b078ca828 100644
--- a/novaclient/v1_1/shell.py
+++ b/novaclient/v1_1/shell.py
@@ -1780,6 +1780,14 @@ def do_remove_secgroup(cs, args):
     server.remove_security_group(args.secgroup)
 
 
+@utils.arg('server', metavar='<server>', help='Name or ID of server.')
+def do_list_secgroup(cs, args):
+    """List Security Group(s) of a server."""
+    server = _find_server(cs, args.server)
+    groups = server.list_security_group()
+    _print_secgroups(groups)
+
+
 @utils.arg('pool',
            metavar='<floating-ip-pool>',
            help='Name of Floating IP Pool. (Optional)',