###############################################################################
# Copyright (c) 2008 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_only

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

# SSH system ID
system_type_id = org.eclipse.rse.systemtype.ssh

# Address of ssh connection
address = unknown

# userid to connect to ssh connection
#userid =  

# password to connect to ssh connection
#password = 