Skip to content

Commit

Permalink
SSH proxy: allow using a bare hostname without root@
Browse files Browse the repository at this point in the history
Otherwise we can't connect to the proxy as the local user and we can't
use ~/.ssh/config to set User directives.

Defaulting to root@ is hard to deprecate without introducing new config.
A clean break is probably clearest.
  • Loading branch information
jeremy committed Oct 3, 2024
1 parent 81f3508 commit 46e3085
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 8 deletions.
4 changes: 2 additions & 2 deletions lib/kamal/configuration/docs/ssh.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ ssh:

# Proxy host
#
# Specified in the form <host> or <user>@<host>:
proxy: root@proxy-host
# Specified in the form <host> or <user>@<host>
proxy: proxy-host

# Proxy command
#
Expand Down
6 changes: 3 additions & 3 deletions lib/kamal/configuration/ssh.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ def port
end

def proxy
if (proxy = ssh_config["proxy"])
Net::SSH::Proxy::Jump.new(proxy.include?("@") ? proxy : "root@#{proxy}")
elsif (proxy_command = ssh_config["proxy_command"])
if proxy = ssh_config["proxy"]
Net::SSH::Proxy::Jump.new(proxy)
elsif proxy_command = ssh_config["proxy_command"]
Net::SSH::Proxy::Command.new(proxy_command)
end
end
Expand Down
4 changes: 2 additions & 2 deletions test/commands/app_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,7 @@ class CommandsAppTest < ActiveSupport::TestCase

test "run over ssh with proxy" do
@config[:ssh] = { "proxy" => "2.2.2.2" }
assert_equal "ssh -J root@2.2.2.2 -t [email protected] -p 22 'ls'", new_command.run_over_ssh("ls", host: "1.1.1.1")
assert_equal "ssh -J 2.2.2.2 -t [email protected] -p 22 'ls'", new_command.run_over_ssh("ls", host: "1.1.1.1")
end

test "run over ssh with proxy user" do
Expand All @@ -304,7 +304,7 @@ class CommandsAppTest < ActiveSupport::TestCase

test "run over ssh with custom user with proxy" do
@config[:ssh] = { "user" => "app", "proxy" => "2.2.2.2" }
assert_equal "ssh -J root@2.2.2.2 -t [email protected] -p 22 'ls'", new_command.run_over_ssh("ls", host: "1.1.1.1")
assert_equal "ssh -J 2.2.2.2 -t [email protected] -p 22 'ls'", new_command.run_over_ssh("ls", host: "1.1.1.1")
end

test "run over ssh with proxy_command" do
Expand Down
2 changes: 1 addition & 1 deletion test/configuration/ssh_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ class ConfigurationSshTest < ActiveSupport::TestCase

test "ssh options with proxy host" do
config = Kamal::Configuration.new(@deploy.tap { |c| c.merge!(ssh: { "proxy" => "1.2.3.4" }) })
assert_equal "root@1.2.3.4", config.ssh.options[:proxy].jump_proxies
assert_equal "1.2.3.4", config.ssh.options[:proxy].jump_proxies
end

test "ssh options with proxy host and user" do
Expand Down

0 comments on commit 46e3085

Please sign in to comment.