<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.ubc.ca/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JolPittet</id>
	<title>UBC Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ubc.ca/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JolPittet"/>
	<link rel="alternate" type="text/html" href="https://wiki.ubc.ca/Special:Contributions/JolPittet"/>
	<updated>2026-07-23T02:25:54Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.ubc.ca/index.php?title=Sandbox:SSH_Proxy_Service_Interim_Technical_Documentation&amp;diff=900193</id>
		<title>Sandbox:SSH Proxy Service Interim Technical Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.ubc.ca/index.php?title=Sandbox:SSH_Proxy_Service_Interim_Technical_Documentation&amp;diff=900193"/>
		<updated>2026-06-30T16:41:00Z</updated>

		<summary type="html">&lt;p&gt;JolPittet: Add silent mode example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Scope of Service ==&lt;br /&gt;
The &#039;&#039;&#039;SSH Proxy Service&#039;&#039;&#039; (&#039;&#039;&#039;SSHP&#039;&#039;&#039;) provides an SSH tunnel between UBC &#039;&#039;&#039;SSH Proxy Pools&#039;&#039;&#039; and Internal &#039;&#039;&#039;SSH Destination Hosts&#039;&#039;&#039;.  Once the connection via the SSH Proxy Pool to the SSH Destination Host is established, then other protocols may be emitted from the SSH Destination Host at the discretion of the SSH Destination Host system administrator.  This service is intended for &#039;&#039;&#039;end-user use&#039;&#039;&#039; of SSH services.&lt;br /&gt;
&lt;br /&gt;
It does not:&lt;br /&gt;
&lt;br /&gt;
* allow other protocols to be emitted from the &#039;&#039;&#039;SSH Proxy Pools&#039;&#039;&#039;&lt;br /&gt;
* provide a full replacement for the [https://it.ubc.ca/services/email-voice-internet/myvpn UBC myVPN service].&lt;br /&gt;
* provide any user control or management of accounts or authentication on SSH Destination Hosts&lt;br /&gt;
* provide an approved method for administration of systems over SSH using privileged accounts.  Remote SSH systems administration with privileged accounts should be facilitated through the use of the high-security [https://it.ubc.ca/services/accounts-passwords/privileged-access-management-pam UBC PAM (Privileged Access Management)] service.  PAM offers session recording, privileged account management, and a host of other security features which make it the right choice for systems administration work.&lt;br /&gt;
[[File:Sshproxyservicescope.png|frameless|931x931px]]&lt;br /&gt;
&lt;br /&gt;
== Connectivity Information ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Purpose&lt;br /&gt;
!Address&lt;br /&gt;
!Port&lt;br /&gt;
!Credentials&lt;br /&gt;
|-&lt;br /&gt;
|SSH Proxy Pool - UBC Vancouver&lt;br /&gt;
|p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
142.103.90.160/28&lt;br /&gt;
|22&lt;br /&gt;
|CWL Production Account&lt;br /&gt;
|-&lt;br /&gt;
|SSH Key Registration Web Portal&lt;br /&gt;
|https://sshp.cybersecurity.ubc.ca/&lt;br /&gt;
|443&lt;br /&gt;
|CWL Production Account&lt;br /&gt;
|}&lt;br /&gt;
{| style=&amp;quot;border: 1px #98B2C3 solid; padding: 0; border-radius: 0.25rem; padding-right: .3em;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size: 36px; background: #C3D0DB; border-radius: 0.25rem; padding: .1em .3em .1em .3em; color: #002145; margin-right: .2em; margin-left: .1em;&amp;quot;&amp;gt;&amp;amp;#8505;&amp;lt;/span&amp;gt; || If you are a server administrator who would like to provide access to a server through the SSH Proxy Service, please see the &#039;&#039;&#039;Information for System Administrators and Destination Host Administrators&#039;&#039;&#039; section at the bottom of this page.&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  width=100% align=&amp;quot;center&amp;quot;valign=&amp;quot;top&amp;quot;&lt;br /&gt;
!style=&amp;quot;background: #faecc8;&amp;quot;| Warning&lt;br /&gt;
|- &lt;br /&gt;
|style=&amp;quot;background: #faf6ed; align=left; padding:3px 7px 3px 7px;&amp;quot;|Avoid the use of SSH Agent forwarding! SSH Agent forwarding exposes your authentication to the server you’re connecting to. By default, an attacker with control of the server (i.e. root access) can communicate with your agent and use your key to authenticate to other servers without any notification (i.e. impersonate you). For this reason, one must be careful when using SSH agent forwarding. Defaulting to always forwarding the agent is &#039;&#039;&#039;strongly&#039;&#039;&#039; discouraged. Note also that while the attacker can use your key as long as the agent is running and forwarded, they cannot steal/download the key for offline/later use.  &amp;lt;ref name=&amp;quot;Mozilla OpenSSH Guidelines&amp;quot;&amp;gt;{{cite web |url=https://infosec.mozilla.org/guidelines/openssh#ssh-agent-forwarding |title=Mozilla OpenSSH Guidelines |publisher=Mozilla}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Authentication Options ===&lt;br /&gt;
&#039;&#039;&#039;Interactive&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* CWL accounts with MFA.&lt;br /&gt;
* MFA required on every authentication.&lt;br /&gt;
* Convenient and easy to use - best suited for ad-hoc work.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Non-Interactive (Key-based)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* CWL usernames with SSH keys.&lt;br /&gt;
* MFA not required on authentication.&lt;br /&gt;
* CWL with MFA is required to register SSH keys at https://sshp.cybersecurity.ubc.ca/&lt;br /&gt;
* Best-suited for heavy users or non-interactive connections.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: 1px #98B2C3 solid; padding: 0; border-radius: 0.25rem; padding-right: .3em;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size: 36px; background: #C3D0DB; border-radius: 0.25rem; padding: .1em .3em .1em .3em; color: #002145; margin-right: .2em; margin-left: .1em;&amp;quot;&amp;gt;&amp;amp;#8505;&amp;lt;/span&amp;gt; || At this time, there is no key expiration on SSH keys, but this may change in the future.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SSH Key Handling ==&lt;br /&gt;
Do not re-use an existing key for the SSH Proxy Service unless required.&lt;br /&gt;
&lt;br /&gt;
Keys should be generated following the [https://infosec.mozilla.org/guidelines/openssh#key-generation|Mozilla OpenSSH guidelines], as per UBC Information Security Standard M3, section 4.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 $ ssh-keygen -t ed25519 -f ~/.ssh/id_ubcsshp_$(date +%Y%m%d) -C &amp;quot;UBC key for SSHP&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
This creates one keypair consisting of a public and a private key.  Register the &#039;&#039;&#039;public&#039;&#039;&#039; key in the SSH Proxy Key Registration Portal - &#039;&#039;&#039;NOT the private key&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Use Case Patterns ==&lt;br /&gt;
See the [https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Proxies_and_Jump_Hosts#Jump_Hosts_--_Passing_Through_a_Gateway_or_Two Proxies and Jump Hosts section of the OpenSSH Cookbook] for many other scenarios.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Auth to SSHP ===&lt;br /&gt;
Connecting through SSHP Proxy Pool p01.sshp.cybersecurity.ubc.ca interactively with SSH to the Destination Host can be accomplished transparently via use of the &#039;&#039;&#039;-J&#039;&#039;&#039; parameter.&lt;br /&gt;
&lt;br /&gt;
 $ ssh -J &amp;lt;cwlusername&amp;gt;@p01.sshp.cybersecurity.ubc.ca &amp;lt;username&amp;gt;@&amp;lt;destination_host&amp;gt;&lt;br /&gt;
==== Example ====&lt;br /&gt;
Connect to &#039;&#039;&#039;foo.ubc.ca&#039;&#039;&#039; as user &#039;&#039;&#039;jbdoe-dest&#039;&#039;&#039; using CWL username &#039;&#039;&#039;jbdoe-cwl&#039;&#039;&#039; via SSHP:&lt;br /&gt;
&lt;br /&gt;
 $ ssh -J jbdoe-cwl@p01.sshp.cybersecurity.ubc.ca jbdoe-dest@foo.ubc.ca&lt;br /&gt;
&lt;br /&gt;
=== Non-Interactive (SSH Key-based) Auth to SSHP ===&lt;br /&gt;
Connecting through SSHP using SSH key-based auth requires you first create an SSHP Proxy Pool-specific &#039;&#039;&#039;Host&#039;&#039;&#039; directive in ~/.ssh/config.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.ssh/config&lt;br /&gt;
&lt;br /&gt;
 Host p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
     IdentityFile ~/.ssh/id_ed25519_ubcsshp_20221206&lt;br /&gt;
     User jbdoe-cwl&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;IdentityFile&#039;&#039; is the private key corresponding to the private which you registered with the [https://sshp.cybersecurity.ubc.ca/ SSH Proxy Key Registration Portal].&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;User&#039;&#039; is your CWL username. If you do not specify a username in the &#039;&#039;config&#039;&#039; file, you will need to specify it in the connection string (i.e. jbdoe-cwl@p01.sshp.cybersecurity.ubc.ca).&lt;br /&gt;
&lt;br /&gt;
After that, you can connect using the same &#039;&#039;&#039;-J&#039;&#039;&#039; parameter used in the Interactive section above.&lt;br /&gt;
&lt;br /&gt;
Because the public key has been registered with the SSH Proxy Key Registration Portal, the private key will be used during the authentication with the SSH Proxy Pool, and you will not be required to perform an interactive login with the SSH Proxy Pool -- however, you will still need to authenticate with the SSH Destination Host.&lt;br /&gt;
&lt;br /&gt;
 $ ssh -J p01.sshp.cybersecurity.ubc.ca jdoe-dest@ssh-target.misc.ubc.ca&lt;br /&gt;
 #####################################################################&lt;br /&gt;
 UBC SSH Proxy Service                               &amp;lt;nowiki&amp;gt;https://it.ubc.ca&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ------------------------------ NOTICE -------------------------------&lt;br /&gt;
 You are connecting to the UBC SSH Proxy Service.&lt;br /&gt;
 &lt;br /&gt;
 After authentication succeeds here, your SSH client will connect&lt;br /&gt;
 through this proxy to your destination host.&lt;br /&gt;
 &lt;br /&gt;
 Any subsequent username, password, MFA, or host key prompts may be&lt;br /&gt;
 originating from your destination host, not from this proxy service.&lt;br /&gt;
 &lt;br /&gt;
 If authentication or access fails after the proxy connection has&lt;br /&gt;
 been established, contact the administrator of your destination host.&lt;br /&gt;
 &lt;br /&gt;
 Repeated failed authentication attempts within a short period of time&lt;br /&gt;
 may result in a temporary network block affecting access to this&lt;br /&gt;
 proxy service from your source IP address.&lt;br /&gt;
 &lt;br /&gt;
 The use of this proxy service may be monitored and recorded for&lt;br /&gt;
 administrative and security purposes. Monitoring is limited to&lt;br /&gt;
 activity on the proxy service itself and does not include activity&lt;br /&gt;
 on your destination host, which may be monitored separately. Anyone&lt;br /&gt;
 accessing this service expressly consents to such monitoring and is&lt;br /&gt;
 advised that if such monitoring reveals possible evidence of criminal&lt;br /&gt;
 activity, UBC may provide that evidence to law enforcement officials.&lt;br /&gt;
 ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 Enter passphrase for key &#039;id_ed25519_ubcsshp_20221206&#039;:&lt;br /&gt;
 SSH Proxy Session ID: ITSO-A4E59.2176796&lt;br /&gt;
 &lt;br /&gt;
 SSH Proxy Pool login successful.&lt;br /&gt;
 &lt;br /&gt;
 =====================================================================&lt;br /&gt;
 DESTINATION HOST SESSION BEGINS BELOW THIS LINE&lt;br /&gt;
 For further assistance, contact the destination host administrator.&lt;br /&gt;
 =====================================================================&lt;br /&gt;
 &lt;br /&gt;
 (jdoe-dest@ssh-target.misc.ubc.ca) Password:&lt;br /&gt;
 Updates Information Summary: available&lt;br /&gt;
     6 Security notice(s)&lt;br /&gt;
         3 Important Security notice(s)&lt;br /&gt;
         2 Medium Security notice(s)&lt;br /&gt;
         1 Low Security notice(s)&lt;br /&gt;
 &lt;br /&gt;
    ,     #_&lt;br /&gt;
    ~\_  ####_        Amazon Linux 2023&lt;br /&gt;
   ~~  \_#####\&lt;br /&gt;
   ~~     \###|&lt;br /&gt;
   ~~       \#/ ___   &amp;lt;nowiki&amp;gt;https://aws.amazon.com/linux/amazon-linux-2023&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    ~~       V~&#039; &#039;-&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;    ~~~         /&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
       ~~._.   _/&lt;br /&gt;
          _/ _/&lt;br /&gt;
        _/m/&#039;&lt;br /&gt;
 Last failed login: Fri May 15 23:26:30 UTC 2026 from 10.93.46.42 on ssh:notty&lt;br /&gt;
 There was 1 failed login attempt since the last successful login.&lt;br /&gt;
 Last login: Fri May 15 22:29:02 2026 from 10.93.46.42&lt;br /&gt;
 [jdoe-dest@ssh-target ~]$&lt;br /&gt;
&lt;br /&gt;
=== SSH Port Forwarding through SSHP ===&lt;br /&gt;
SSH port forwarding [also known as SSH tunneling] may be used through the SSH Proxy Service provided that the tunnel terminates on an authorized SSH Destination Host.&lt;br /&gt;
&lt;br /&gt;
The SSH Proxy Service does not permit SSH Proxy Hosts to be used as port forwarding endpoints.  However, once a connection to an SSH Destination Host has been established through the SSH Proxy Service, standard SSH port forwarding features, if supported by the SSH Destination Host, remain available.&lt;br /&gt;
&lt;br /&gt;
For an introduction to SSH tunneling concepts and usage patterns, see:&lt;br /&gt;
&lt;br /&gt;
* [https://help.ubuntu.com/community/SSH/OpenSSH/PortForwarding Ubuntu Community Documentation: SSH/OpenSSH/PortForwarding]&lt;br /&gt;
* [https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Tunnels Wikibooks OpenSSH/Cookbook/Tunnels]&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
Create a local tunnel to www.ubc.ca:443 through an SSH Destination Host:&lt;br /&gt;
 ssh -N -J &amp;lt;cwlusername&amp;gt;@p01.sshp.cybersecurity.ubc.ca -L 8443:www.ubc.ca:443 \&lt;br /&gt;
   &amp;lt;destination_username&amp;gt;@&amp;lt;destination_host&amp;gt;&lt;br /&gt;
The resulting traffic path is: &lt;br /&gt;
&lt;br /&gt;
User Workstation:8443 ==&amp;gt; SSH Proxy Host ==&amp;gt; SSH Destination Host ==&amp;gt; www.ubc.ca:443&lt;br /&gt;
&lt;br /&gt;
The SSH tunnel is established on the SSH Destination Host.  Any outbound connections generated by the tunnel originate from the SSH Destination Host and are subject to the policies, network controls, and authorization decisions of the SSH Destination Host administrator.&lt;br /&gt;
&lt;br /&gt;
==== Limitation ====&lt;br /&gt;
SSH Proxy Hosts cannot be used as general-purpose TCP forwarding endpoints.&lt;br /&gt;
&lt;br /&gt;
For example, the following connection attempt is not permitted and will fail because it does not use the destination as the tunnel endpoint - it uses the proxy host itself:&lt;br /&gt;
 ssh -N -L 8443:www.ubc.ca:443 &amp;lt;cwlusername&amp;gt;@p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
When traffic attempts to use the tunnel, the SSH client will receive an error similar to:&lt;br /&gt;
 channel 2: open failed: administratively prohibited: open failed&lt;br /&gt;
This behavior is intentional and prevents SSH Proxy Hosts from being used as generic network relays.&lt;br /&gt;
&lt;br /&gt;
=== Using SSHP via ssh config === &lt;br /&gt;
Connecting with SSH to a Destination Host can be accomplished transparently via use of the &#039;&#039;&#039;ProxyJump&#039;&#039;&#039; configuration setting for any given host defined in the ~/.ssh/config file.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.ssh/config&lt;br /&gt;
&lt;br /&gt;
 Host &amp;lt;destination_host&amp;gt;&lt;br /&gt;
     ProxyJump p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
&lt;br /&gt;
However, doing this will result in the p01.sshp.cybersecurity.ubc.ca host being passed the local username of the source system, which may not be desired.  As such, you may want to also define a &#039;&#039;&#039;Host&#039;&#039;&#039; section for the SSHP Proxy Pool that forces a specific username to be used.&lt;br /&gt;
&lt;br /&gt;
==== Example 1 ====&lt;br /&gt;
Connect to foo.ubc.ca through SSHP Proxy Pool p01.sshp.cybersecurity.ubc.ca with CWL username of jbdoe-cwl:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.ssh/config&lt;br /&gt;
 Host p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
     User jbdoe-cwl&lt;br /&gt;
 &lt;br /&gt;
 Host foo.ubc.ca&lt;br /&gt;
     ProxyJump p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
&lt;br /&gt;
With that in place, you can connect to foo.ubc.ca as user jbdoe-dest:&lt;br /&gt;
&lt;br /&gt;
 $ ssh jbdoe-dest@foo.ubc.ca&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: &#039;&#039;&#039; This will route ALL ssh connections to the Destination Host through SSHP from the source host, including those that originate from on-campus.&lt;br /&gt;
&lt;br /&gt;
==== Example 2 ====&lt;br /&gt;
Use SSHP with an SSHP-specific SSH key for all hosts under UBC subdomain foo.ubc.ca, using a CWL username of jbdoe-cwl to login to SSHP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.ssh/config&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Host p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
     User jbdoe-cwl&lt;br /&gt;
     IdentityFile ~/.ssh/id_ed25519_ubcsshp_20221206&lt;br /&gt;
 &lt;br /&gt;
 Host foo.ubc.ca&lt;br /&gt;
     ProxyJump p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
&lt;br /&gt;
With that in place, you can connect to foo.ubc.ca as user jbdoe-dest, without being prompted for your CWL password.&lt;br /&gt;
&lt;br /&gt;
 $ ssh jbdoe-dest@foo.ubc.ca&lt;br /&gt;
&lt;br /&gt;
==== Example 3 ====&lt;br /&gt;
Use SSHP for all hosts under UBC subdomain bar.ubc.ca:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.ssh/config&lt;br /&gt;
&lt;br /&gt;
 Match Host *.bar.ubc.ca&lt;br /&gt;
     ProxyJump p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
&lt;br /&gt;
With that in place, you can connect to foo.bar.ubc.ca as user jbdoe-dest (note that this will use whatever your local account username is to auth to SSHP):&lt;br /&gt;
&lt;br /&gt;
 $ ssh jbdoe-dest@foo.bar.ubc.ca&lt;br /&gt;
&lt;br /&gt;
==== Example 4 ====&lt;br /&gt;
Use SSHP for all hosts under UBC subdomain bar.ubc.ca except for foo.bar.ubc.ca and only off-campus:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.ssh/config&#039;&#039;&lt;br /&gt;
 Match Host *.bar.ubc.ca,!foo.bar.ubc.ca exec &amp;quot;[\[ `curl --no-progress-meter ifconfig.me` != 142\.103\.* ]]&amp;quot;&lt;br /&gt;
     ProxyJump p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
(Remove the \ - it&#039;s necessary here because [ is special.)&lt;br /&gt;
Tune the IP address expression to whatever is &amp;quot;on-campus&amp;quot; for you.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Identity Rubric&lt;br /&gt;
|-&lt;br /&gt;
! SSH Command Line !! ssh_config !! Local Username !! SSHP Username !! Destination System Username !! Login UX&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$ ssh -J p01.sshp.cybersecurity.ubc.ca foo.ubc.ca&amp;lt;/code&amp;gt; || none || &amp;lt;code&amp;gt;jbdoe-local&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-local&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-local&amp;lt;/code&amp;gt; || SSHP: Interactive&lt;br /&gt;
foo.ubc.ca: Interactive&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$ ssh -J jbdoe-cwl@p01.sshp.cybersecurity.ubc.ca jbdoe-dest@foo.ubc.ca&amp;lt;/code&amp;gt; || none || &amp;lt;code&amp;gt;jbdoe-local&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-cwl&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-dest&amp;lt;/code&amp;gt; || SSHP: Interactive&lt;br /&gt;
foo.ubc.ca: Interactive&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$ ssh jbdoe-dest@foo.ubc.ca&amp;lt;/code&amp;gt; ||&lt;br /&gt;
 Host foo.ubc.ca&lt;br /&gt;
     ProxyJump p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
|| &amp;lt;code&amp;gt;jbdoe-local&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-local&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-dest&amp;lt;/code&amp;gt; || SSHP: Interactive&lt;br /&gt;
foo.ubc.ca: Interactive&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$ ssh foo.bar.ubc.ca&amp;lt;/code&amp;gt; ||&lt;br /&gt;
 Host p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
     User jbdoe-cwl&lt;br /&gt;
 &lt;br /&gt;
 Match *.bar.ubc.ca&lt;br /&gt;
     ProxyJump p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
|| &amp;lt;code&amp;gt;jbdoe-local&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-cwl&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-dest&amp;lt;/code&amp;gt;  || SSHP: Interactive&lt;br /&gt;
foo.bar.ubc.ca: Interactive&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$ ssh foo.ubc.ca&amp;lt;/code&amp;gt; ||&lt;br /&gt;
 Host p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
     User jbdoe-cwl&lt;br /&gt;
     IdentityFile ~/.ssh/id_ed25519_ubcsshp_20221206&lt;br /&gt;
 &lt;br /&gt;
 Host foo.ubc.ca&lt;br /&gt;
     User jbdoe-dest&lt;br /&gt;
     ProxyJump p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
|| &amp;lt;code&amp;gt;jbdoe-local&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-cwl&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-dest&amp;lt;/code&amp;gt;  || SSHP: Non-Interactive&lt;br /&gt;
foo.ubc.ca: Interactive&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$ ssh foo.ubc.ca&amp;lt;/code&amp;gt; ||&lt;br /&gt;
 Host p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
     User jbdoe-cwl&lt;br /&gt;
     IdentityFile ~/.ssh/id_ed25519_ubcsshp_20221206&lt;br /&gt;
 &lt;br /&gt;
 Match *.ubc.ca&lt;br /&gt;
     User jbdoe-dest&lt;br /&gt;
     IdentityFile ~/.ssh/id_rsa_ubc_20201101&lt;br /&gt;
     ProxyJump p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
|| &amp;lt;code&amp;gt;jbdoe-local&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-cwl&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-dest&amp;lt;/code&amp;gt;  || SSHP: Non-Interactive&lt;br /&gt;
foo.ubc.ca: Non-Interactive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Silent mode: Suppressing proxy-side output for non-interactive workflows ===&lt;br /&gt;
&lt;br /&gt;
Some non-interactive workflows require clean STDOUT/STDERR from the SSH Destination Host, such as database dumps, scripts, rsync-like tools, or SSH used as a transport.&lt;br /&gt;
&lt;br /&gt;
Avoid suppressing STDERR on the outer SSH command, for example:&lt;br /&gt;
&lt;br /&gt;
  ssh destination-host &#039;mysqldump ...&#039; 2&amp;gt;/dev/null&lt;br /&gt;
&lt;br /&gt;
This suppresses all STDERR from the SSH command, including useful errors from the destination host or remote command.&lt;br /&gt;
&lt;br /&gt;
Instead, use ProxyCommand to suppress STDERR &#039;&#039;&#039;only&#039;&#039;&#039; from the SSH Proxy Pool connection:&lt;br /&gt;
&lt;br /&gt;
  Host p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
      User &amp;lt;cwlusername&amp;gt;&lt;br /&gt;
      IdentityFile ~/.ssh/id_ed25519_ubcsshp_20221206&lt;br /&gt;
&lt;br /&gt;
  Host destination-host&lt;br /&gt;
      User &amp;lt;destination_username&amp;gt;&lt;br /&gt;
      ProxyCommand ssh p01.sshp.cybersecurity.ubc.ca -W %h:%p 2&amp;gt;/dev/null&lt;br /&gt;
&lt;br /&gt;
With this pattern, proxy-side banner/session output is suppressed, while STDERR from the SSH Destination Host and remote command is still displayed.&lt;br /&gt;
&lt;br /&gt;
== Common Issues and Troubleshooting ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&#039;&#039;&#039;Error Message&#039;&#039;&#039;&lt;br /&gt;
!&#039;&#039;&#039;Was SSH Proxy Session ID† Displayed&#039;&#039;&#039;&lt;br /&gt;
!&#039;&#039;&#039;Was Destination Host Notice‡ Displayed&#039;&#039;&#039;&lt;br /&gt;
!&#039;&#039;&#039;Probable Causes&#039;&#039;&#039;&lt;br /&gt;
!&#039;&#039;&#039;Correction&#039;&#039;&#039;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 Error 500: SSH Proxy Service error. Submit a ticket at &amp;lt;nowiki&amp;gt;https://it.ubc.ca/selfservice&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
 &lt;br /&gt;
 Connection closed by &amp;lt;ip address&amp;gt; port 22&lt;br /&gt;
 &lt;br /&gt;
 Connection closed by UNKNOWN port 65535&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|SSH Proxy Service server-side error.&lt;br /&gt;
|This is a service error that has to be corrected by the SSH Proxy Service administrators.  Submit a ticket to notify us of the error.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 Error 503: SSH Proxy Service is currently offline.  Please try again later.&lt;br /&gt;
 &lt;br /&gt;
 Connection closed by &amp;lt;ip address&amp;gt; port 22&lt;br /&gt;
 &lt;br /&gt;
 Connection closed by UNKNOWN port 65535&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|SSH Proxy Service has been intentionally taken offline.&lt;br /&gt;
|Try again later, watch status.it.ubc.ca for updates.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 &amp;lt;after three password attempts&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 jdoe@p01.sshp.devl.infosec.it.ubc.ca: Permission denied (publickey,keyboard-interactive).&lt;br /&gt;
 &lt;br /&gt;
 Connection closed by UNKNOWN port 65535&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|Invalid CWL username or password.&lt;br /&gt;
|Check to ensure that your username and password are valid.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 (jdoe@p01.sshp.devl.infosec.it.ubc.ca) Password:&lt;br /&gt;
 &lt;br /&gt;
 (jdoe@p01.sshp.devl.infosec.it.ubc.ca) Duo two-factor login for jdoe&lt;br /&gt;
 &lt;br /&gt;
 Enter a passcode:&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|Account is enrolled in Duo MFA, but does not have a license for Duo.&lt;br /&gt;
|Submit a ticket to request a Duo MFA license.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 &amp;lt;SSH key provided as authentication parameter&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 (jdoe@p01.sshp.devl.infosec.it.ubc.ca) Password:&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|&#039;&#039;&#039;Cause 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Public SSH key is not registered in portal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cause 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Public SSH key is registered in portal, but hasn&#039;t been pushed to the proxy pool yet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cause 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Private SSH key cannot be read.&lt;br /&gt;
|&#039;&#039;&#039;Correction 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Register public SSH key in portal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Correction 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wait 2-5 minutes, try again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Correction 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ensure that permissions on your private SSH key are correct.  See this video for more information.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 no such identity: &amp;lt;filename&amp;gt;: No such file or directory&lt;br /&gt;
 &lt;br /&gt;
 (jdoe@p01.sshp.devl.infosec.it.ubc.ca) Password:&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|Private SSH key does not exist.&lt;br /&gt;
|Check name for typo, check to ensure file exists as displayed.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 no such identity: &amp;lt;filename&amp;gt;: Permission denied&lt;br /&gt;
 &lt;br /&gt;
 (jdoe@p01.sshp.devl.infosec.it.ubc.ca) Password:&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|Permissions on directory holding private key is too restrictive.&lt;br /&gt;
|Set permissions on key directory to be readable by current user.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&lt;br /&gt;
 &lt;br /&gt;
 @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @&lt;br /&gt;
 &lt;br /&gt;
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&lt;br /&gt;
 &lt;br /&gt;
 Permissions &amp;lt;permissions&amp;gt; for &#039;&amp;lt;filename&amp;gt;&#039; are too open.&lt;br /&gt;
 &lt;br /&gt;
 It is required that your private key files are NOT accessible by others.&lt;br /&gt;
 &lt;br /&gt;
 This private key will be ignored.&lt;br /&gt;
 &lt;br /&gt;
 Load key &amp;quot;&amp;lt;filename&amp;gt;&amp;quot;: bad permissions&lt;br /&gt;
 &lt;br /&gt;
 (jdoe@p01.sshp.devl.infosec.it.ubc.ca) Password:&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|Private key file has permissions that are too open.&lt;br /&gt;
|Set permissions on file to 0400 (user: read, group: none, other:none).  See this video for more information.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 Load key &amp;quot;&amp;lt;filename&amp;gt;&amp;quot;: Permission denied&lt;br /&gt;
 &lt;br /&gt;
 (jdoe@p01.sshp.devl.infosec.it.ubc.ca) Password:&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|Private key file has permissions that are too restrictive.&lt;br /&gt;
|Set permissions on file to 0400 (user: read, group: none, other:none).  See this video for more information.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 SSH Proxy Session ID: &amp;lt;session id&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 Error 403: Authorization denied by SSH Proxy Service policy.&lt;br /&gt;
 &lt;br /&gt;
 Connection closed by &amp;lt;ip address&amp;gt; port 22&lt;br /&gt;
 &lt;br /&gt;
 Connection closed by UNKNOWN port 65535&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|&#039;&#039;&#039;Cause 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
User account is disabled.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cause 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
User does not have the required permissions to use the SSH Proxy Service.&lt;br /&gt;
|&#039;&#039;&#039;Correction 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Check to ensure your CWL account is working by logging in at &amp;lt;nowiki&amp;gt;https://myaccount.ubc.ca&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Correction 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Submit a ticket for the SSH Proxy Service.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 channel 0: open failed: administratively prohibited: open failed&lt;br /&gt;
 &lt;br /&gt;
 stdio forwarding failed&lt;br /&gt;
 &lt;br /&gt;
 Connection closed by UNKNOWN port 65535&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|&#039;&#039;&#039;Cause 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Typo in the Destination Host name or port (a default port of 22 is assumed but some Destination Hosts may be using a non-standard port).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cause 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Attempting to reach a Destination Host that is not authorized.&lt;br /&gt;
|&#039;&#039;&#039;Correction 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Check to ensure that the Destination Host name (and port, if provided) are correct.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Correction 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Request that the Destination Host be registered with the SSH Proxy Service.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 channel 0: open failed: connect failed: open failed&lt;br /&gt;
 &lt;br /&gt;
 Connection to p01.sshp.cybersecurity.ubc.ca closed.&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|Attempting to login to the proxy host directly via SSH.&lt;br /&gt;
|Use the proxy pool via the -J parameter or ProxyJump option.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 &amp;lt;very long delay before message&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 channel 0: open failed: connect failed: Connection timed out&lt;br /&gt;
 &lt;br /&gt;
 stdio forwarding failed&lt;br /&gt;
 &lt;br /&gt;
 Connection closed by UNKNOWN port 65535&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|Destination host is authorized but is not responding.&lt;br /&gt;
|Contact the Destination Host administrator for assistance.  The host may be offline, or a firewall on the destination side is blocking the connection attempt.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 &amp;lt;displayed by itself AFTER the Destination Host Notice&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 Connection closed by UNKNOWN port 65535&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|Destination Host is authorized and destination port is open, but it is not communicating using SSH.&lt;br /&gt;
|Contact the Destination Host administrator for assistance.&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|† The &#039;&#039;&#039;SSH Proxy Session ID&#039;&#039;&#039; will only be shown when authentication to the proxy pool is successful.  If you see the SSH Proxy Session ID, the username, password, MFA challenges have passed, or a valid SSH key was provided. &lt;br /&gt;
&lt;br /&gt;
An example of a successful authentication displaying an SSH Proxy Session ID is:&lt;br /&gt;
 SSH Proxy Session ID: ITSO-A4E59.0353334&lt;br /&gt;
 &lt;br /&gt;
 SSH Proxy Pool login successful.&lt;br /&gt;
‡ The &#039;&#039;&#039;Destination Host Notice&#039;&#039;&#039; refers to the following text which appears after the SSH Proxy Service has authenticated and authorized the user, and determined that the destination is authorized.&lt;br /&gt;
 =====================================================================&lt;br /&gt;
 &lt;br /&gt;
 DESTINATION HOST SESSION BEGINS BELOW THIS LINE&lt;br /&gt;
 &lt;br /&gt;
 For further assistance, contact the destination host administrator.&lt;br /&gt;
 &lt;br /&gt;
 =====================================================================&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Information for System Administrators and Destination Host Administrators ==&lt;br /&gt;
&lt;br /&gt;
=== Modifying Firewall Rules ===&lt;br /&gt;
To allow inbound communication from a specific SSH Proxy Pool, open your inbound firewalls to the address listed in the &#039;&#039;&#039;Connectivity Information&#039;&#039;&#039; section of this page for your specific Destination Host and Port.&lt;br /&gt;
&lt;br /&gt;
=== Adding Destination Hosts ===&lt;br /&gt;
To request a host be added as a Destination Host, please submit a [https://ubc.service-now.com/selfservice?id=sc_cat_item_v2&amp;amp;sys_id=9440ab761b136c500dbaec21b24bcbbb Cybersecurity Services Support Request] through the UBC Self-Service Portal.  Provide the following information:&lt;br /&gt;
&lt;br /&gt;
# Your department and role&lt;br /&gt;
# Destination Hostname (FQDN)&lt;br /&gt;
## Only Destination Hosts with FQDNs are eligible for this service&lt;br /&gt;
# Destination IP Address&lt;br /&gt;
# Destination Port&lt;br /&gt;
# Technical Owner Name&lt;br /&gt;
# Technical Owner Email&lt;br /&gt;
# Business Owner Name&lt;br /&gt;
# Business Owner Email&lt;br /&gt;
# Reason&lt;br /&gt;
&lt;br /&gt;
A request has been submitted to have a custom form for this type of request.&lt;br /&gt;
&lt;br /&gt;
== Support / Feedback ==&lt;br /&gt;
For any questions, comments, suggestions or feedback regarding the SSH Proxy Service, please submit a [https://ubc.service-now.com/selfservice?id=sc_cat_item_v2&amp;amp;sys_id=9440ab761b136c500dbaec21b24bcbbb Cybersecurity Services Support Request] through the UBC Self-Service Portal.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{Reflist}}&lt;/div&gt;</summary>
		<author><name>JolPittet</name></author>
	</entry>
	<entry>
		<id>https://wiki.ubc.ca/index.php?title=Sandbox:SSH_Proxy_Service_Interim_Technical_Documentation&amp;diff=900173</id>
		<title>Sandbox:SSH Proxy Service Interim Technical Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.ubc.ca/index.php?title=Sandbox:SSH_Proxy_Service_Interim_Technical_Documentation&amp;diff=900173"/>
		<updated>2026-06-30T00:32:06Z</updated>

		<summary type="html">&lt;p&gt;JolPittet: Typo fix missing ProxyJump directive&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Scope of Service ==&lt;br /&gt;
The &#039;&#039;&#039;SSH Proxy Service&#039;&#039;&#039; (&#039;&#039;&#039;SSHP&#039;&#039;&#039;) provides an SSH tunnel between UBC &#039;&#039;&#039;SSH Proxy Pools&#039;&#039;&#039; and Internal &#039;&#039;&#039;SSH Destination Hosts&#039;&#039;&#039;.  Once the connection via the SSH Proxy Pool to the SSH Destination Host is established, then other protocols may be emitted from the SSH Destination Host at the discretion of the SSH Destination Host system administrator.  This service is intended for &#039;&#039;&#039;end-user use&#039;&#039;&#039; of SSH services.&lt;br /&gt;
&lt;br /&gt;
It does not:&lt;br /&gt;
&lt;br /&gt;
* allow other protocols to be emitted from the &#039;&#039;&#039;SSH Proxy Pools&#039;&#039;&#039;&lt;br /&gt;
* provide a full replacement for the [https://it.ubc.ca/services/email-voice-internet/myvpn UBC myVPN service].&lt;br /&gt;
* provide any user control or management of accounts or authentication on SSH Destination Hosts&lt;br /&gt;
* provide an approved method for administration of systems over SSH using privileged accounts.  Remote SSH systems administration with privileged accounts should be facilitated through the use of the high-security [https://it.ubc.ca/services/accounts-passwords/privileged-access-management-pam UBC PAM (Privileged Access Management)] service.  PAM offers session recording, privileged account management, and a host of other security features which make it the right choice for systems administration work.&lt;br /&gt;
[[File:Sshproxyservicescope.png|frameless|931x931px]]&lt;br /&gt;
&lt;br /&gt;
== Connectivity Information ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Purpose&lt;br /&gt;
!Address&lt;br /&gt;
!Port&lt;br /&gt;
!Credentials&lt;br /&gt;
|-&lt;br /&gt;
|SSH Proxy Pool - UBC Vancouver&lt;br /&gt;
|p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
142.103.90.160/28&lt;br /&gt;
|22&lt;br /&gt;
|CWL Production Account&lt;br /&gt;
|-&lt;br /&gt;
|SSH Key Registration Web Portal&lt;br /&gt;
|https://sshp.cybersecurity.ubc.ca/&lt;br /&gt;
|443&lt;br /&gt;
|CWL Production Account&lt;br /&gt;
|}&lt;br /&gt;
{| style=&amp;quot;border: 1px #98B2C3 solid; padding: 0; border-radius: 0.25rem; padding-right: .3em;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size: 36px; background: #C3D0DB; border-radius: 0.25rem; padding: .1em .3em .1em .3em; color: #002145; margin-right: .2em; margin-left: .1em;&amp;quot;&amp;gt;&amp;amp;#8505;&amp;lt;/span&amp;gt; || If you are a server administrator who would like to provide access to a server through the SSH Proxy Service, please see the &#039;&#039;&#039;Information for System Administrators and Destination Host Administrators&#039;&#039;&#039; section at the bottom of this page.&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  width=100% align=&amp;quot;center&amp;quot;valign=&amp;quot;top&amp;quot;&lt;br /&gt;
!style=&amp;quot;background: #faecc8;&amp;quot;| Warning&lt;br /&gt;
|- &lt;br /&gt;
|style=&amp;quot;background: #faf6ed; align=left; padding:3px 7px 3px 7px;&amp;quot;|Avoid the use of SSH Agent forwarding! SSH Agent forwarding exposes your authentication to the server you’re connecting to. By default, an attacker with control of the server (i.e. root access) can communicate with your agent and use your key to authenticate to other servers without any notification (i.e. impersonate you). For this reason, one must be careful when using SSH agent forwarding. Defaulting to always forwarding the agent is &#039;&#039;&#039;strongly&#039;&#039;&#039; discouraged. Note also that while the attacker can use your key as long as the agent is running and forwarded, they cannot steal/download the key for offline/later use.  &amp;lt;ref name=&amp;quot;Mozilla OpenSSH Guidelines&amp;quot;&amp;gt;{{cite web |url=https://infosec.mozilla.org/guidelines/openssh#ssh-agent-forwarding |title=Mozilla OpenSSH Guidelines |publisher=Mozilla}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Authentication Options ===&lt;br /&gt;
&#039;&#039;&#039;Interactive&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* CWL accounts with MFA.&lt;br /&gt;
* MFA required on every authentication.&lt;br /&gt;
* Convenient and easy to use - best suited for ad-hoc work.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Non-Interactive (Key-based)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* CWL usernames with SSH keys.&lt;br /&gt;
* MFA not required on authentication.&lt;br /&gt;
* CWL with MFA is required to register SSH keys at https://sshp.cybersecurity.ubc.ca/&lt;br /&gt;
* Best-suited for heavy users or non-interactive connections.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: 1px #98B2C3 solid; padding: 0; border-radius: 0.25rem; padding-right: .3em;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size: 36px; background: #C3D0DB; border-radius: 0.25rem; padding: .1em .3em .1em .3em; color: #002145; margin-right: .2em; margin-left: .1em;&amp;quot;&amp;gt;&amp;amp;#8505;&amp;lt;/span&amp;gt; || At this time, there is no key expiration on SSH keys, but this may change in the future.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SSH Key Handling ==&lt;br /&gt;
Do not re-use an existing key for the SSH Proxy Service unless required.&lt;br /&gt;
&lt;br /&gt;
Keys should be generated following the [https://infosec.mozilla.org/guidelines/openssh#key-generation|Mozilla OpenSSH guidelines], as per UBC Information Security Standard M3, section 4.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 $ ssh-keygen -t ed25519 -f ~/.ssh/id_ubcsshp_$(date +%Y%m%d) -C &amp;quot;UBC key for SSHP&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
This creates one keypair consisting of a public and a private key.  Register the &#039;&#039;&#039;public&#039;&#039;&#039; key in the SSH Proxy Key Registration Portal - &#039;&#039;&#039;NOT the private key&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Use Case Patterns ==&lt;br /&gt;
See the [https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Proxies_and_Jump_Hosts#Jump_Hosts_--_Passing_Through_a_Gateway_or_Two Proxies and Jump Hosts section of the OpenSSH Cookbook] for many other scenarios.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Auth to SSHP ===&lt;br /&gt;
Connecting through SSHP Proxy Pool p01.sshp.cybersecurity.ubc.ca interactively with SSH to the Destination Host can be accomplished transparently via use of the &#039;&#039;&#039;-J&#039;&#039;&#039; parameter.&lt;br /&gt;
&lt;br /&gt;
 $ ssh -J &amp;lt;cwlusername&amp;gt;@p01.sshp.cybersecurity.ubc.ca &amp;lt;username&amp;gt;@&amp;lt;destination_host&amp;gt;&lt;br /&gt;
==== Example ====&lt;br /&gt;
Connect to &#039;&#039;&#039;foo.ubc.ca&#039;&#039;&#039; as user &#039;&#039;&#039;jbdoe-dest&#039;&#039;&#039; using CWL username &#039;&#039;&#039;jbdoe-cwl&#039;&#039;&#039; via SSHP:&lt;br /&gt;
&lt;br /&gt;
 $ ssh -J jbdoe-cwl@p01.sshp.cybersecurity.ubc.ca jbdoe-dest@foo.ubc.ca&lt;br /&gt;
&lt;br /&gt;
=== Non-Interactive (SSH Key-based) Auth to SSHP ===&lt;br /&gt;
Connecting through SSHP using SSH key-based auth requires you first create an SSHP Proxy Pool-specific &#039;&#039;&#039;Host&#039;&#039;&#039; directive in ~/.ssh/config.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.ssh/config&lt;br /&gt;
&lt;br /&gt;
 Host p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
     IdentityFile ~/.ssh/id_ed25519_ubcsshp_20221206&lt;br /&gt;
     User jbdoe-cwl&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;IdentityFile&#039;&#039; is the private key corresponding to the private which you registered with the [https://sshp.cybersecurity.ubc.ca/ SSH Proxy Key Registration Portal].&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;User&#039;&#039; is your CWL username. If you do not specify a username in the &#039;&#039;config&#039;&#039; file, you will need to specify it in the connection string (i.e. jbdoe-cwl@p01.sshp.cybersecurity.ubc.ca).&lt;br /&gt;
&lt;br /&gt;
After that, you can connect using the same &#039;&#039;&#039;-J&#039;&#039;&#039; parameter used in the Interactive section above.&lt;br /&gt;
&lt;br /&gt;
Because the public key has been registered with the SSH Proxy Key Registration Portal, the private key will be used during the authentication with the SSH Proxy Pool, and you will not be required to perform an interactive login with the SSH Proxy Pool -- however, you will still need to authenticate with the SSH Destination Host.&lt;br /&gt;
&lt;br /&gt;
 $ ssh -J p01.sshp.cybersecurity.ubc.ca jdoe-dest@ssh-target.misc.ubc.ca&lt;br /&gt;
 #####################################################################&lt;br /&gt;
 UBC SSH Proxy Service                               &amp;lt;nowiki&amp;gt;https://it.ubc.ca&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ------------------------------ NOTICE -------------------------------&lt;br /&gt;
 You are connecting to the UBC SSH Proxy Service.&lt;br /&gt;
 &lt;br /&gt;
 After authentication succeeds here, your SSH client will connect&lt;br /&gt;
 through this proxy to your destination host.&lt;br /&gt;
 &lt;br /&gt;
 Any subsequent username, password, MFA, or host key prompts may be&lt;br /&gt;
 originating from your destination host, not from this proxy service.&lt;br /&gt;
 &lt;br /&gt;
 If authentication or access fails after the proxy connection has&lt;br /&gt;
 been established, contact the administrator of your destination host.&lt;br /&gt;
 &lt;br /&gt;
 Repeated failed authentication attempts within a short period of time&lt;br /&gt;
 may result in a temporary network block affecting access to this&lt;br /&gt;
 proxy service from your source IP address.&lt;br /&gt;
 &lt;br /&gt;
 The use of this proxy service may be monitored and recorded for&lt;br /&gt;
 administrative and security purposes. Monitoring is limited to&lt;br /&gt;
 activity on the proxy service itself and does not include activity&lt;br /&gt;
 on your destination host, which may be monitored separately. Anyone&lt;br /&gt;
 accessing this service expressly consents to such monitoring and is&lt;br /&gt;
 advised that if such monitoring reveals possible evidence of criminal&lt;br /&gt;
 activity, UBC may provide that evidence to law enforcement officials.&lt;br /&gt;
 ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 Enter passphrase for key &#039;id_ed25519_ubcsshp_20221206&#039;:&lt;br /&gt;
 SSH Proxy Session ID: ITSO-A4E59.2176796&lt;br /&gt;
 &lt;br /&gt;
 SSH Proxy Pool login successful.&lt;br /&gt;
 &lt;br /&gt;
 =====================================================================&lt;br /&gt;
 DESTINATION HOST SESSION BEGINS BELOW THIS LINE&lt;br /&gt;
 For further assistance, contact the destination host administrator.&lt;br /&gt;
 =====================================================================&lt;br /&gt;
 &lt;br /&gt;
 (jdoe-dest@ssh-target.misc.ubc.ca) Password:&lt;br /&gt;
 Updates Information Summary: available&lt;br /&gt;
     6 Security notice(s)&lt;br /&gt;
         3 Important Security notice(s)&lt;br /&gt;
         2 Medium Security notice(s)&lt;br /&gt;
         1 Low Security notice(s)&lt;br /&gt;
 &lt;br /&gt;
    ,     #_&lt;br /&gt;
    ~\_  ####_        Amazon Linux 2023&lt;br /&gt;
   ~~  \_#####\&lt;br /&gt;
   ~~     \###|&lt;br /&gt;
   ~~       \#/ ___   &amp;lt;nowiki&amp;gt;https://aws.amazon.com/linux/amazon-linux-2023&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    ~~       V~&#039; &#039;-&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;    ~~~         /&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
       ~~._.   _/&lt;br /&gt;
          _/ _/&lt;br /&gt;
        _/m/&#039;&lt;br /&gt;
 Last failed login: Fri May 15 23:26:30 UTC 2026 from 10.93.46.42 on ssh:notty&lt;br /&gt;
 There was 1 failed login attempt since the last successful login.&lt;br /&gt;
 Last login: Fri May 15 22:29:02 2026 from 10.93.46.42&lt;br /&gt;
 [jdoe-dest@ssh-target ~]$&lt;br /&gt;
&lt;br /&gt;
=== SSH Port Forwarding through SSHP ===&lt;br /&gt;
SSH port forwarding [also known as SSH tunneling] may be used through the SSH Proxy Service provided that the tunnel terminates on an authorized SSH Destination Host.&lt;br /&gt;
&lt;br /&gt;
The SSH Proxy Service does not permit SSH Proxy Hosts to be used as port forwarding endpoints.  However, once a connection to an SSH Destination Host has been established through the SSH Proxy Service, standard SSH port forwarding features, if supported by the SSH Destination Host, remain available.&lt;br /&gt;
&lt;br /&gt;
For an introduction to SSH tunneling concepts and usage patterns, see:&lt;br /&gt;
&lt;br /&gt;
* [https://help.ubuntu.com/community/SSH/OpenSSH/PortForwarding Ubuntu Community Documentation: SSH/OpenSSH/PortForwarding]&lt;br /&gt;
* [https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Tunnels Wikibooks OpenSSH/Cookbook/Tunnels]&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
Create a local tunnel to www.ubc.ca:443 through an SSH Destination Host:&lt;br /&gt;
 ssh -N -J &amp;lt;cwlusername&amp;gt;@p01.sshp.cybersecurity.ubc.ca -L 8443:www.ubc.ca:443 \&lt;br /&gt;
   &amp;lt;destination_username&amp;gt;@&amp;lt;destination_host&amp;gt;&lt;br /&gt;
The resulting traffic path is: &lt;br /&gt;
&lt;br /&gt;
User Workstation:8443 ==&amp;gt; SSH Proxy Host ==&amp;gt; SSH Destination Host ==&amp;gt; www.ubc.ca:443&lt;br /&gt;
&lt;br /&gt;
The SSH tunnel is established on the SSH Destination Host.  Any outbound connections generated by the tunnel originate from the SSH Destination Host and are subject to the policies, network controls, and authorization decisions of the SSH Destination Host administrator.&lt;br /&gt;
&lt;br /&gt;
==== Limitation ====&lt;br /&gt;
SSH Proxy Hosts cannot be used as general-purpose TCP forwarding endpoints.&lt;br /&gt;
&lt;br /&gt;
For example, the following connection attempt is not permitted and will fail because it does not use the destination as the tunnel endpoint - it uses the proxy host itself:&lt;br /&gt;
 ssh -N -L 8443:www.ubc.ca:443 &amp;lt;cwlusername&amp;gt;@p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
When traffic attempts to use the tunnel, the SSH client will receive an error similar to:&lt;br /&gt;
 channel 2: open failed: administratively prohibited: open failed&lt;br /&gt;
This behavior is intentional and prevents SSH Proxy Hosts from being used as generic network relays.&lt;br /&gt;
&lt;br /&gt;
=== Using SSHP via ssh config === &lt;br /&gt;
Connecting with SSH to a Destination Host can be accomplished transparently via use of the &#039;&#039;&#039;ProxyJump&#039;&#039;&#039; configuration setting for any given host defined in the ~/.ssh/config file.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.ssh/config&lt;br /&gt;
&lt;br /&gt;
 Host &amp;lt;destination_host&amp;gt;&lt;br /&gt;
     ProxyJump p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
&lt;br /&gt;
However, doing this will result in the p01.sshp.cybersecurity.ubc.ca host being passed the local username of the source system, which may not be desired.  As such, you may want to also define a &#039;&#039;&#039;Host&#039;&#039;&#039; section for the SSHP Proxy Pool that forces a specific username to be used.&lt;br /&gt;
&lt;br /&gt;
==== Example 1 ====&lt;br /&gt;
Connect to foo.ubc.ca through SSHP Proxy Pool p01.sshp.cybersecurity.ubc.ca with CWL username of jbdoe-cwl:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.ssh/config&lt;br /&gt;
 Host p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
     User jbdoe-cwl&lt;br /&gt;
 &lt;br /&gt;
 Host foo.ubc.ca&lt;br /&gt;
     ProxyJump p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
&lt;br /&gt;
With that in place, you can connect to foo.ubc.ca as user jbdoe-dest:&lt;br /&gt;
&lt;br /&gt;
 $ ssh jbdoe-dest@foo.ubc.ca&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: &#039;&#039;&#039; This will route ALL ssh connections to the Destination Host through SSHP from the source host, including those that originate from on-campus.&lt;br /&gt;
&lt;br /&gt;
==== Example 2 ====&lt;br /&gt;
Use SSHP with an SSHP-specific SSH key for all hosts under UBC subdomain foo.ubc.ca, using a CWL username of jbdoe-cwl to login to SSHP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.ssh/config&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Host p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
     User jbdoe-cwl&lt;br /&gt;
     IdentityFile ~/.ssh/id_ed25519_ubcsshp_20221206&lt;br /&gt;
 &lt;br /&gt;
 Host foo.ubc.ca&lt;br /&gt;
     ProxyJump p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
&lt;br /&gt;
With that in place, you can connect to foo.ubc.ca as user jbdoe-dest, without being prompted for your CWL password.&lt;br /&gt;
&lt;br /&gt;
 $ ssh jbdoe-dest@foo.ubc.ca&lt;br /&gt;
&lt;br /&gt;
==== Example 3 ====&lt;br /&gt;
Use SSHP for all hosts under UBC subdomain bar.ubc.ca:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.ssh/config&lt;br /&gt;
&lt;br /&gt;
 Match Host *.bar.ubc.ca&lt;br /&gt;
     ProxyJump p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
&lt;br /&gt;
With that in place, you can connect to foo.bar.ubc.ca as user jbdoe-dest (note that this will use whatever your local account username is to auth to SSHP):&lt;br /&gt;
&lt;br /&gt;
 $ ssh jbdoe-dest@foo.bar.ubc.ca&lt;br /&gt;
&lt;br /&gt;
==== Example 4 ====&lt;br /&gt;
Use SSHP for all hosts under UBC subdomain bar.ubc.ca except for foo.bar.ubc.ca and only off-campus:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~/.ssh/config&#039;&#039;&lt;br /&gt;
 Match Host *.bar.ubc.ca,!foo.bar.ubc.ca exec &amp;quot;[\[ `curl --no-progress-meter ifconfig.me` != 142\.103\.* ]]&amp;quot;&lt;br /&gt;
     ProxyJump p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
(Remove the \ - it&#039;s necessary here because [ is special.)&lt;br /&gt;
Tune the IP address expression to whatever is &amp;quot;on-campus&amp;quot; for you.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ Identity Rubric&lt;br /&gt;
|-&lt;br /&gt;
! SSH Command Line !! ssh_config !! Local Username !! SSHP Username !! Destination System Username !! Login UX&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$ ssh -J p01.sshp.cybersecurity.ubc.ca foo.ubc.ca&amp;lt;/code&amp;gt; || none || &amp;lt;code&amp;gt;jbdoe-local&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-local&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-local&amp;lt;/code&amp;gt; || SSHP: Interactive&lt;br /&gt;
foo.ubc.ca: Interactive&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$ ssh -J jbdoe-cwl@p01.sshp.cybersecurity.ubc.ca jbdoe-dest@foo.ubc.ca&amp;lt;/code&amp;gt; || none || &amp;lt;code&amp;gt;jbdoe-local&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-cwl&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-dest&amp;lt;/code&amp;gt; || SSHP: Interactive&lt;br /&gt;
foo.ubc.ca: Interactive&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$ ssh jbdoe-dest@foo.ubc.ca&amp;lt;/code&amp;gt; ||&lt;br /&gt;
 Host foo.ubc.ca&lt;br /&gt;
     ProxyJump p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
|| &amp;lt;code&amp;gt;jbdoe-local&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-local&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-dest&amp;lt;/code&amp;gt; || SSHP: Interactive&lt;br /&gt;
foo.ubc.ca: Interactive&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$ ssh foo.bar.ubc.ca&amp;lt;/code&amp;gt; ||&lt;br /&gt;
 Host p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
     User jbdoe-cwl&lt;br /&gt;
 &lt;br /&gt;
 Match *.bar.ubc.ca&lt;br /&gt;
     ProxyJump p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
|| &amp;lt;code&amp;gt;jbdoe-local&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-cwl&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-dest&amp;lt;/code&amp;gt;  || SSHP: Interactive&lt;br /&gt;
foo.bar.ubc.ca: Interactive&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$ ssh foo.ubc.ca&amp;lt;/code&amp;gt; ||&lt;br /&gt;
 Host p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
     User jbdoe-cwl&lt;br /&gt;
     IdentityFile ~/.ssh/id_ed25519_ubcsshp_20221206&lt;br /&gt;
 &lt;br /&gt;
 Host foo.ubc.ca&lt;br /&gt;
     User jbdoe-dest&lt;br /&gt;
     ProxyJump p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
|| &amp;lt;code&amp;gt;jbdoe-local&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-cwl&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-dest&amp;lt;/code&amp;gt;  || SSHP: Non-Interactive&lt;br /&gt;
foo.ubc.ca: Interactive&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$ ssh foo.ubc.ca&amp;lt;/code&amp;gt; ||&lt;br /&gt;
 Host p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
     User jbdoe-cwl&lt;br /&gt;
     IdentityFile ~/.ssh/id_ed25519_ubcsshp_20221206&lt;br /&gt;
 &lt;br /&gt;
 Match *.ubc.ca&lt;br /&gt;
     User jbdoe-dest&lt;br /&gt;
     IdentityFile ~/.ssh/id_rsa_ubc_20201101&lt;br /&gt;
     ProxyJump p01.sshp.cybersecurity.ubc.ca&lt;br /&gt;
|| &amp;lt;code&amp;gt;jbdoe-local&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-cwl&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;jbdoe-dest&amp;lt;/code&amp;gt;  || SSHP: Non-Interactive&lt;br /&gt;
foo.ubc.ca: Non-Interactive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Common Issues and Troubleshooting ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&#039;&#039;&#039;Error Message&#039;&#039;&#039;&lt;br /&gt;
!&#039;&#039;&#039;Was SSH Proxy Session ID† Displayed&#039;&#039;&#039;&lt;br /&gt;
!&#039;&#039;&#039;Was Destination Host Notice‡ Displayed&#039;&#039;&#039;&lt;br /&gt;
!&#039;&#039;&#039;Probable Causes&#039;&#039;&#039;&lt;br /&gt;
!&#039;&#039;&#039;Correction&#039;&#039;&#039;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 Error 500: SSH Proxy Service error. Submit a ticket at &amp;lt;nowiki&amp;gt;https://it.ubc.ca/selfservice&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
 &lt;br /&gt;
 Connection closed by &amp;lt;ip address&amp;gt; port 22&lt;br /&gt;
 &lt;br /&gt;
 Connection closed by UNKNOWN port 65535&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|SSH Proxy Service server-side error.&lt;br /&gt;
|This is a service error that has to be corrected by the SSH Proxy Service administrators.  Submit a ticket to notify us of the error.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 Error 503: SSH Proxy Service is currently offline.  Please try again later.&lt;br /&gt;
 &lt;br /&gt;
 Connection closed by &amp;lt;ip address&amp;gt; port 22&lt;br /&gt;
 &lt;br /&gt;
 Connection closed by UNKNOWN port 65535&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|SSH Proxy Service has been intentionally taken offline.&lt;br /&gt;
|Try again later, watch status.it.ubc.ca for updates.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 &amp;lt;after three password attempts&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 jdoe@p01.sshp.devl.infosec.it.ubc.ca: Permission denied (publickey,keyboard-interactive).&lt;br /&gt;
 &lt;br /&gt;
 Connection closed by UNKNOWN port 65535&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|Invalid CWL username or password.&lt;br /&gt;
|Check to ensure that your username and password are valid.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 (jdoe@p01.sshp.devl.infosec.it.ubc.ca) Password:&lt;br /&gt;
 &lt;br /&gt;
 (jdoe@p01.sshp.devl.infosec.it.ubc.ca) Duo two-factor login for jdoe&lt;br /&gt;
 &lt;br /&gt;
 Enter a passcode:&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|Account is enrolled in Duo MFA, but does not have a license for Duo.&lt;br /&gt;
|Submit a ticket to request a Duo MFA license.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 &amp;lt;SSH key provided as authentication parameter&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 (jdoe@p01.sshp.devl.infosec.it.ubc.ca) Password:&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|&#039;&#039;&#039;Cause 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Public SSH key is not registered in portal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cause 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Public SSH key is registered in portal, but hasn&#039;t been pushed to the proxy pool yet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cause 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Private SSH key cannot be read.&lt;br /&gt;
|&#039;&#039;&#039;Correction 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Register public SSH key in portal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Correction 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wait 2-5 minutes, try again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Correction 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ensure that permissions on your private SSH key are correct.  See this video for more information.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 no such identity: &amp;lt;filename&amp;gt;: No such file or directory&lt;br /&gt;
 &lt;br /&gt;
 (jdoe@p01.sshp.devl.infosec.it.ubc.ca) Password:&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|Private SSH key does not exist.&lt;br /&gt;
|Check name for typo, check to ensure file exists as displayed.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 no such identity: &amp;lt;filename&amp;gt;: Permission denied&lt;br /&gt;
 &lt;br /&gt;
 (jdoe@p01.sshp.devl.infosec.it.ubc.ca) Password:&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|Permissions on directory holding private key is too restrictive.&lt;br /&gt;
|Set permissions on key directory to be readable by current user.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&lt;br /&gt;
 &lt;br /&gt;
 @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @&lt;br /&gt;
 &lt;br /&gt;
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&lt;br /&gt;
 &lt;br /&gt;
 Permissions &amp;lt;permissions&amp;gt; for &#039;&amp;lt;filename&amp;gt;&#039; are too open.&lt;br /&gt;
 &lt;br /&gt;
 It is required that your private key files are NOT accessible by others.&lt;br /&gt;
 &lt;br /&gt;
 This private key will be ignored.&lt;br /&gt;
 &lt;br /&gt;
 Load key &amp;quot;&amp;lt;filename&amp;gt;&amp;quot;: bad permissions&lt;br /&gt;
 &lt;br /&gt;
 (jdoe@p01.sshp.devl.infosec.it.ubc.ca) Password:&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|Private key file has permissions that are too open.&lt;br /&gt;
|Set permissions on file to 0400 (user: read, group: none, other:none).  See this video for more information.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 Load key &amp;quot;&amp;lt;filename&amp;gt;&amp;quot;: Permission denied&lt;br /&gt;
 &lt;br /&gt;
 (jdoe@p01.sshp.devl.infosec.it.ubc.ca) Password:&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|Private key file has permissions that are too restrictive.&lt;br /&gt;
|Set permissions on file to 0400 (user: read, group: none, other:none).  See this video for more information.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 SSH Proxy Session ID: &amp;lt;session id&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 Error 403: Authorization denied by SSH Proxy Service policy.&lt;br /&gt;
 &lt;br /&gt;
 Connection closed by &amp;lt;ip address&amp;gt; port 22&lt;br /&gt;
 &lt;br /&gt;
 Connection closed by UNKNOWN port 65535&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|&#039;&#039;&#039;Cause 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
User account is disabled.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cause 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
User does not have the required permissions to use the SSH Proxy Service.&lt;br /&gt;
|&#039;&#039;&#039;Correction 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Check to ensure your CWL account is working by logging in at &amp;lt;nowiki&amp;gt;https://myaccount.ubc.ca&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Correction 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Submit a ticket for the SSH Proxy Service.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 channel 0: open failed: administratively prohibited: open failed&lt;br /&gt;
 &lt;br /&gt;
 stdio forwarding failed&lt;br /&gt;
 &lt;br /&gt;
 Connection closed by UNKNOWN port 65535&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|&#039;&#039;&#039;Cause 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Typo in the Destination Host name or port (a default port of 22 is assumed but some Destination Hosts may be using a non-standard port).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cause 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Attempting to reach a Destination Host that is not authorized.&lt;br /&gt;
|&#039;&#039;&#039;Correction 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Check to ensure that the Destination Host name (and port, if provided) are correct.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Correction 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Request that the Destination Host be registered with the SSH Proxy Service.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 channel 0: open failed: connect failed: open failed&lt;br /&gt;
 &lt;br /&gt;
 Connection to p01.sshp.cybersecurity.ubc.ca closed.&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|Attempting to login to the proxy host directly via SSH.&lt;br /&gt;
|Use the proxy pool via the -J parameter or ProxyJump option.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 &amp;lt;very long delay before message&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 channel 0: open failed: connect failed: Connection timed out&lt;br /&gt;
 &lt;br /&gt;
 stdio forwarding failed&lt;br /&gt;
 &lt;br /&gt;
 Connection closed by UNKNOWN port 65535&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|Destination host is authorized but is not responding.&lt;br /&gt;
|Contact the Destination Host administrator for assistance.  The host may be offline, or a firewall on the destination side is blocking the connection attempt.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 &amp;lt;displayed by itself AFTER the Destination Host Notice&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 Connection closed by UNKNOWN port 65535&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|Destination Host is authorized and destination port is open, but it is not communicating using SSH.&lt;br /&gt;
|Contact the Destination Host administrator for assistance.&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|† The &#039;&#039;&#039;SSH Proxy Session ID&#039;&#039;&#039; will only be shown when authentication to the proxy pool is successful.  If you see the SSH Proxy Session ID, the username, password, MFA challenges have passed, or a valid SSH key was provided. &lt;br /&gt;
&lt;br /&gt;
An example of a successful authentication displaying an SSH Proxy Session ID is:&lt;br /&gt;
 SSH Proxy Session ID: ITSO-A4E59.0353334&lt;br /&gt;
 &lt;br /&gt;
 SSH Proxy Pool login successful.&lt;br /&gt;
‡ The &#039;&#039;&#039;Destination Host Notice&#039;&#039;&#039; refers to the following text which appears after the SSH Proxy Service has authenticated and authorized the user, and determined that the destination is authorized.&lt;br /&gt;
 =====================================================================&lt;br /&gt;
 &lt;br /&gt;
 DESTINATION HOST SESSION BEGINS BELOW THIS LINE&lt;br /&gt;
 &lt;br /&gt;
 For further assistance, contact the destination host administrator.&lt;br /&gt;
 &lt;br /&gt;
 =====================================================================&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Information for System Administrators and Destination Host Administrators ==&lt;br /&gt;
&lt;br /&gt;
=== Modifying Firewall Rules ===&lt;br /&gt;
To allow inbound communication from a specific SSH Proxy Pool, open your inbound firewalls to the address listed in the &#039;&#039;&#039;Connectivity Information&#039;&#039;&#039; section of this page for your specific Destination Host and Port.&lt;br /&gt;
&lt;br /&gt;
=== Adding Destination Hosts ===&lt;br /&gt;
To request a host be added as a Destination Host, please submit a [https://ubc.service-now.com/selfservice?id=sc_cat_item_v2&amp;amp;sys_id=9440ab761b136c500dbaec21b24bcbbb Cybersecurity Services Support Request] through the UBC Self-Service Portal.  Provide the following information:&lt;br /&gt;
&lt;br /&gt;
# Your department and role&lt;br /&gt;
# Destination Hostname (FQDN)&lt;br /&gt;
## Only Destination Hosts with FQDNs are eligible for this service&lt;br /&gt;
# Destination IP Address&lt;br /&gt;
# Destination Port&lt;br /&gt;
# Technical Owner Name&lt;br /&gt;
# Technical Owner Email&lt;br /&gt;
# Business Owner Name&lt;br /&gt;
# Business Owner Email&lt;br /&gt;
# Reason&lt;br /&gt;
&lt;br /&gt;
A request has been submitted to have a custom form for this type of request.&lt;br /&gt;
&lt;br /&gt;
== Support / Feedback ==&lt;br /&gt;
For any questions, comments, suggestions or feedback regarding the SSH Proxy Service, please submit a [https://ubc.service-now.com/selfservice?id=sc_cat_item_v2&amp;amp;sys_id=9440ab761b136c500dbaec21b24bcbbb Cybersecurity Services Support Request] through the UBC Self-Service Portal.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{Reflist}}&lt;/div&gt;</summary>
		<author><name>JolPittet</name></author>
	</entry>
</feed>