Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/ssh/azext_ssh/rdp_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,8 @@ def start_ssh_tunnel(op_info):
if '-E' in op_info.ssh_args:
raise azclierror.BadRequestError("Can't use -E ssh parameter when using --rdp")

command = [ssh_utils.get_ssh_client_path('ssh', op_info.ssh_client_folder), op_info.get_host()]
command = [ssh_utils.get_ssh_client_path('ssh', op_info.ssh_client_folder), op_info.get_host(),
"-l", op_info.local_user]
command = command + op_info.build_args() + op_info.ssh_args

logger.debug("Running ssh command %s", ' '.join(command))
Expand Down
12 changes: 6 additions & 6 deletions src/ssh/azext_ssh/ssh_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,12 @@ def is_arc(self):
return False

def get_host(self):
if not self.is_arc():
if self.local_user and self.ip:
return self.local_user + "@" + self.ip
else:
if self.local_user and self.vm_name:
return self.local_user + "@" + self.vm_name
if not self.is_arc() and self.ip:
return self.ip

if self.is_arc() and self.vm_name:
return self.vm_name

raise azclierror.BadRequestError("Unable to determine host.")

# build args behaves different depending on the resource type
Expand Down
2 changes: 1 addition & 1 deletion src/ssh/azext_ssh/ssh_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ def start_ssh_connection(op_info, delete_keys, delete_cert):
env['SSHPROXY_RELAY_INFO'] = connectivity_utils.format_relay_info_string(op_info.relay_info)

# Get ssh client before starting the clean up process in case there is an error in getting client.
command = [get_ssh_client_path('ssh', op_info.ssh_client_folder), op_info.get_host()]
command = [get_ssh_client_path('ssh', op_info.ssh_client_folder), op_info.get_host(), "-l", op_info.local_user]

if not op_info.cert_file and not op_info.private_key_file:
# In this case, even if delete_credentials is true, there is nothing to clean-up.
Expand Down
2 changes: 1 addition & 1 deletion src/ssh/azext_ssh/tests/latest/test_rdp_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ def test_start_ssh_tunnel(self, mock_popen, mock_relay, mock_path, mock_env):
mock_relay.return_value = 'relay_string'
mock_popen.return_value = 'ssh_process'

expected_command = ['ssh', "user@vm", '-o', 'ProxyCommand=\"proxy\" -p port', '-i', 'priv', '-o', 'CertificateFile=\"cert\"', 'arg1', 'arg2', '-v']
expected_command = ['ssh', "vm", '-l', 'user', '-o', 'ProxyCommand=\"proxy\" -p port', '-i', 'priv', '-o', 'CertificateFile=\"cert\"', 'arg1', 'arg2', '-v']
expected_env = {'var1':'value1', 'var2':'value2', 'var3':'value3', 'SSHPROXY_RELAY_INFO':'relay_string'}

ssh_sub, print_logs = rdp_utils.start_ssh_tunnel(op_info)
Expand Down
4 changes: 2 additions & 2 deletions src/ssh/azext_ssh/tests/latest/test_ssh_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,9 @@ def test_ssh_session(self, mock_abspath):

def test_ssh_session_get_host(self):
session = ssh_info.SSHSession(None, None, "ip", None, None, False, "user", None, None, None, [], False, "Microsoft.Compute", None, None, False)
self.assertEqual("user@ip", session.get_host())
self.assertEqual("ip", session.get_host())
session = ssh_info.SSHSession("rg", "vm", None, None, None, False, "user", None, None, None, [], False, "Microsoft.HybridCompute", None, None, True)
self.assertEqual("user@vm", session.get_host())
self.assertEqual("vm", session.get_host())

@mock.patch('os.path.abspath')
def test_ssh_session_build_args_compute(self, mock_abspath):
Expand Down
4 changes: 2 additions & 2 deletions src/ssh/azext_ssh/tests/latest/test_ssh_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def test_start_ssh_connection_compute(self, mock_system, mock_copy_env, mock_cal
mock_path.return_value = 'ssh'
mock_copy_env.return_value = {'var1':'value1', 'var2':'value2', 'var3':'value3'}
mock_startcleanup.return_value = 'log', ['arg1', 'arg2', 'arg3', '-E', 'log', '-v'], 'cleanup process'
expected_command = ['ssh', 'user@ip', '-i', 'priv', '-o', 'CertificateFile=\"cert\"', '-p', 'port', 'arg1', 'arg2', 'arg3', '-E', 'log', '-v']
expected_command = ['ssh', 'ip', '-l', 'user', '-i', 'priv', '-o', 'CertificateFile=\"cert\"', '-p', 'port', 'arg1', 'arg2', 'arg3', '-E', 'log', '-v']
expected_env = {'var1':'value1', 'var2':'value2', 'var3':'value3'}

ssh_utils.start_ssh_connection(op_info, True, True)
Expand Down Expand Up @@ -63,7 +63,7 @@ def test_start_ssh_connection_arc(self, mock_system, mock_relay_str, mock_call,
mock_relay_str.return_value = 'relay_string'
mock_copy_env.return_value = {'var1':'value1', 'var2':'value2', 'var3':'value3'}
mock_path.return_value = 'ssh'
expected_command = ['ssh', 'user@vm', '-o', 'ProxyCommand=\"proxy\" -p port', '-i', 'priv', '-o', 'CertificateFile=\"cert\"', 'arg1']
expected_command = ['ssh', 'vm', '-l', 'user', '-o', 'ProxyCommand=\"proxy\" -p port', '-i', 'priv', '-o', 'CertificateFile=\"cert\"', 'arg1']
expected_env = {'var1':'value1', 'var2':'value2', 'var3':'value3', 'SSHPROXY_RELAY_INFO':'relay_string'}

ssh_utils.start_ssh_connection(op_info, False, False)
Expand Down