diff --git a/addons/core/translations/resources/en-us.yaml b/addons/core/translations/resources/en-us.yaml
index 91baf4f81..cfcccd7dc 100644
--- a/addons/core/translations/resources/en-us.yaml
+++ b/addons/core/translations/resources/en-us.yaml
@@ -306,6 +306,9 @@ session:
raw-api:
show: View API output
hide: Hide API output
+ proxy-url:
+ address-port: Address & port
+ ssh: SSH
org:
title: Org
title_plural: Orgs
diff --git a/ui/desktop/app/components/session/proxy-url/index.hbs b/ui/desktop/app/components/session/proxy-url/index.hbs
new file mode 100644
index 000000000..eed74a3a1
--- /dev/null
+++ b/ui/desktop/app/components/session/proxy-url/index.hbs
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+ {{#if this.isAddressAndPort}}
+
+
+ {{/if}}
+ {{#unless this.isAddressAndPort}}
+
+ {{/unless}}
+
\ No newline at end of file
diff --git a/ui/desktop/app/components/session/proxy-url/index.js b/ui/desktop/app/components/session/proxy-url/index.js
new file mode 100644
index 000000000..d62a20f3e
--- /dev/null
+++ b/ui/desktop/app/components/session/proxy-url/index.js
@@ -0,0 +1,36 @@
+/**
+ * Copyright (c) HashiCorp, Inc.
+ * SPDX-License-Identifier: MPL-2.0
+ */
+
+import Component from '@glimmer/component';
+import { tracked } from '@glimmer/tracking';
+import { action } from '@ember/object';
+import { inject as service } from '@ember/service';
+import { TYPE_TARGET_SSH } from 'api/models/target';
+
+export default class SessionProxyUrlComponent extends Component {
+ @service intl;
+
+ @tracked selectedValue =
+ this.args.targetType === TYPE_TARGET_SSH
+ ? this.intl.t('resources.session.proxy-url.ssh')
+ : this.intl.t('resources.session.proxy-url.address-port');
+
+ get isAddressAndPort() {
+ return (
+ this.selectedValue ===
+ this.intl.t('resources.session.proxy-url.address-port')
+ );
+ }
+
+ get sshCommand() {
+ return `ssh ${this.args.proxyAddress} -p ${this.args.proxyPort}`;
+ }
+
+ @action
+ updateContent(value, closeCallback) {
+ this.selectedValue = value;
+ closeCallback();
+ }
+}
diff --git a/ui/desktop/app/styles/app.scss b/ui/desktop/app/styles/app.scss
index 536f6512e..a27ff8c71 100644
--- a/ui/desktop/app/styles/app.scss
+++ b/ui/desktop/app/styles/app.scss
@@ -541,6 +541,29 @@ $chevron-down: url("data:image/svg+xml;utf-8,