###############################################################################
# Copyright (c) 2008, 2009 IBM Corporation and others. All rights reserved.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
# 
# Contributors:
# IBM Corporation - initial API and implementation
###############################################################################

# name/label for this windows connection
name = test_ssh_terminals_only

# profile name this connection should be created for
profile_name = junit_test_profile

# SSH system ID
system_type_id = org.eclipse.rse.tests.systemType.sshTerminal

# Address of ssh connection
address = unknown

# userid to connect to ssh connection
userid = unknown

# password to connect to ssh connection
#password = 
