Can't use 1Password-managed SSH for `kamal setup`
Author: apdarrCreated Oct 3, 2025Updated Jun 24, 2026
I have a default deploy.yml file (except for the server IP of course), and a small DigitalOcean droplet.
In setting up the droplet's SSH access, I used 1Password's built-in SSH manager. After the droplet initializes, I'm able to SSH into the machine using my the 1Password SSH agent. However, I'm hitting an error with net-ssh when running kamal deploy.
For now I've fallen back to manually adding a SSH key to my server (which is fine), but I'd love get this working with the 1Password SSH agent and I can't figure out why Kamal or net-ssh isn't working with 1Password SSH.
My SSH config file:
Host *
IdentityAgent "~/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"
AddKeysToAgent yesError when attempting to SSH using the 1Password SSH agent:
$kamal setup -v INT ✘ 8s
INFO [748f6148] Running /usr/bin/env mkdir -p .kamal on 138.197.29.118
DEBUG [748f6148] Command: /usr/bin/env mkdir -p .kamal
D, [2025-10-03T15:16:34.914353 #81174] DEBUG -- net.ssh.transport.session[2b0]: establishing connection to 138.197.29.118:22
D, [2025-10-03T15:16:34.958505 #81174] DEBUG -- net.ssh.transport.session[2b0]: connection established
I, [2025-10-03T15:16:34.958592 #81174] INFO -- net.ssh.transport.server_version[2b8]: negotiating protocol version
D, [2025-10-03T15:16:34.958604 #81174] DEBUG -- net.ssh.transport.server_version[2b8]: local is `SSH-2.0-Ruby/Net::SSH_7.3.0 arm64-darwin24'
D, [2025-10-03T15:16:35.016907 #81174] DEBUG -- net.ssh.transport.server_version[2b8]: remote is `SSH-2.0-OpenSSH_9.9p1 Ubuntu-3ubuntu3.1'
W, [2025-10-03T15:16:35.017021 #81174] WARN -- net.ssh.transport.algorithms[2c0]: unsupported algorithm: `["^[email protected]"]'
W, [2025-10-03T15:16:35.017033 #81174] WARN -- net.ssh.transport.algorithms[2c0]: unsupported algorithm: `["^[email protected]"]'
I, [2025-10-03T15:16:35.027613 #81174] INFO -- net.ssh.transport.algorithms[2c0]: sending KEXINIT
D, [2025-10-03T15:16:35.027720 #81174] DEBUG -- socket[2c8]: queueing packet nr 0 type 20 len 660
D, [2025-10-03T15:16:35.027802 #81174] DEBUG -- socket[2c8]: sent 664 bytes
D, [2025-10-03T15:16:35.057988 #81174] DEBUG -- socket[2c8]: read 1168 bytes
D, [2025-10-03T15:16:35.058044 #81174] DEBUG -- socket[2c8]: received packet nr 0 type 20 len 1164
I, [2025-10-03T15:16:35.058194 #81174] INFO -- net.ssh.transport.algorithms[2c0]: got KEXINIT from server
I, [2025-10-03T15:16:35.058258 #81174] INFO -- net.ssh.transport.algorithms[2c0]: negotiating algorithms
D, [2025-10-03T15:16:35.058294 #81174] DEBUG -- net.ssh.transport.algorithms[2c0]: negotiated:
* kex: ecdh-sha2-nistp521
* host_key: ssh-ed25519
* encryption_server: [email protected]
* encryption_client: [email protected]
* hmac_client: hmac-sha2-256
* hmac_server: hmac-sha2-256
* compression_client: none
* compression_server: none
* language_client:
* language_server:
D, [2025-10-03T15:16:35.058301 #81174] DEBUG -- net.ssh.transport.algorithms[2c0]: exchanging keys
D, [2025-10-03T15:16:35.058824 #81174] DEBUG -- socket[2c8]: queueing packet nr 1 type 30 len 148
D, [2025-10-03T15:16:35.058845 #81174] DEBUG -- socket[2c8]: sent 152 bytes
D, [2025-10-03T15:16:35.149236 #81174] DEBUG -- socket[2c8]: read 312 bytes
D, [2025-10-03T15:16:35.149310 #81174] DEBUG -- socket[2c8]: received packet nr 1 type 31 len 292
D, [2025-10-03T15:16:35.150570 #81174] DEBUG -- socket[2c8]: queueing packet nr 2 type 21 len 20
D, [2025-10-03T15:16:35.150637 #81174] DEBUG -- socket[2c8]: sent 24 bytes
D, [2025-10-03T15:16:35.150664 #81174] DEBUG -- socket[2c8]: received packet nr 2 type 21 len 12
D, [2025-10-03T15:16:35.150821 #81174] DEBUG -- net.ssh.authentication.session[2d0]: beginning authentication of `root'
D, [2025-10-03T15:16:35.150859 #81174] DEBUG -- socket[2c8]: queueing packet nr 3 type 5 len 32
D, [2025-10-03T15:16:35.150875 #81174] DEBUG -- socket[2c8]: sent 52 bytes
D, [2025-10-03T15:16:35.277895 #81174] DEBUG -- socket[2c8]: read 52 bytes
D, [2025-10-03T15:16:35.278163 #81174] DEBUG -- socket[2c8]: received packet nr 3 type 6 len 32
D, [2025-10-03T15:16:35.278458 #81174] DEBUG -- net.ssh.authentication.session[2d0]: trying none
D, [2025-10-03T15:16:35.278672 #81174] DEBUG -- socket[2c8]: queueing packet nr 4 type 50 len 48
D, [2025-10-03T15:16:35.278843 #81174] DEBUG -- socket[2c8]: sent 68 bytes
D, [2025-10-03T15:16:35.329457 #81174] DEBUG -- socket[2c8]: read 52 bytes
D, [2025-10-03T15:16:35.329682 #81174] DEBUG -- socket[2c8]: received packet nr 4 type 51 len 32
D, [2025-10-03T15:16:35.329797 #81174] DEBUG -- net.ssh.authentication.session[2d0]: allowed methods: publickey
D, [2025-10-03T15:16:35.329883 #81174] DEBUG -- net.ssh.authentication.methods.none[2d8]: none failed
D, [2025-10-03T15:16:35.329967 #81174] DEBUG -- net.ssh.authentication.session[2d0]: trying publickey
Finished all in 0.6 seconds
**ERROR (TypeError): Exception while executing on host 138.197.29.118: nil can't be coerced into Integer**
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/net-ssh-7.3.0/lib/net/ssh/authentication/ed25519.rb:77:in 'Integer#+'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/net-ssh-7.3.0/lib/net/ssh/authentication/ed25519.rb:77:in 'Net::SSH::Authentication::ED25519::OpenSSHPrivateKeyLoader.read'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/net-ssh-7.3.0/lib/net/ssh/key_factory.rb:124:in 'read'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/net-ssh-7.3.0/lib/net/ssh/key_factory.rb:58:in 'Net::SSH::KeyFactory.load_data_private_key'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/net-ssh-7.3.0/lib/net/ssh/key_factory.rb:41:in 'Net::SSH::KeyFactory.load_private_key'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/net-ssh-7.3.0/lib/net/ssh/authentication/key_manager.rb:287:in 'block in Net::SSH::Authentication::KeyManager#load_identities'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/net-ssh-7.3.0/lib/net/ssh/authentication/key_manager.rb:281:in 'Array#map'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/net-ssh-7.3.0/lib/net/ssh/authentication/key_manager.rb:281:in 'Net::SSH::Authentication::KeyManager#load_identities'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/net-ssh-7.3.0/lib/net/ssh/authentication/key_manager.rb:121:in 'Net::SSH::Authentication::KeyManager#each_identity'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/net-ssh-7.3.0/lib/net/ssh/authentication/methods/publickey.rb:18:in 'Net::SSH::Authentication::Methods::Publickey#authenticate'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/net-ssh-7.3.0/lib/net/ssh/authentication/session.rb:88:in 'block in Net::SSH::Authentication::Session#authenticate'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/net-ssh-7.3.0/lib/net/ssh/authentication/session.rb:72:in 'Array#each'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/net-ssh-7.3.0/lib/net/ssh/authentication/session.rb:72:in 'Net::SSH::Authentication::Session#authenticate'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/net-ssh-7.3.0/lib/net/ssh.rb:262:in 'Net::SSH.start'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/kamal-2.7.0/lib/kamal/sshkit_with_ext.rb:97:in 'block in SSHKit::Backend::Netssh::LimitConcurrentStartsInstance#start_with_concurrency_limit'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/atomic/mutex_semaphore.rb:31:in 'Concurrent::MutexSemaphore#acquire'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/kamal-2.7.0/lib/kamal/sshkit_with_ext.rb:96:in 'SSHKit::Backend::Netssh::LimitConcurrentStartsInstance#start_with_concurrency_limit'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/sshkit-1.24.0/lib/sshkit/backends/connection_pool.rb:62:in 'Method#call'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/sshkit-1.24.0/lib/sshkit/backends/connection_pool.rb:62:in 'SSHKit::Backend::ConnectionPool#with'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/kamal-2.7.0/lib/kamal/sshkit_with_ext.rb:85:in 'SSHKit::Backend::Netssh::LimitConcurrentStartsInstance#with_ssh'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/sshkit-1.24.0/lib/sshkit/backends/netssh.rb:145:in 'SSHKit::Backend::Netssh#execute_command'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/sshkit-1.24.0/lib/sshkit/backends/abstract.rb:147:in 'block in SSHKit::Backend::Abstract#create_command_and_execute'
<internal:kernel>:91:in 'Kernel#tap'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/sshkit-1.24.0/lib/sshkit/backends/abstract.rb:147:in 'SSHKit::Backend::Abstract#create_command_and_execute'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/sshkit-1.24.0/lib/sshkit/backends/abstract.rb:80:in 'SSHKit::Backend::Abstract#execute'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/kamal-2.7.0/lib/kamal/cli/base.rb:196:in 'block in Kamal::Cli::Base#ensure_run_directory'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/sshkit-1.24.0/lib/sshkit/backends/abstract.rb:31:in 'BasicObject#instance_exec'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/sshkit-1.24.0/lib/sshkit/backends/abstract.rb:31:in 'SSHKit::Backend::Abstract#run'
/Users/apdarr/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/kamal-2.7.0/lib/kamal/sshkit_with_ext.rb:118:in 'block (2 levels) in SSHKit::Runner::Parallel::CompleteAll#execute'Source: basecamp/kamal