Skip to content

Conversation

@dwelch-r7
Copy link
Contributor

@dwelch-r7 dwelch-r7 commented Sep 15, 2025

In draft until rapid7/metasploit-credential#191 is landed/releases

Fixes multiple issues with the ssh_login_pubkey module where logging in and/or getting a session from an sshkey would fail

We don't currently support storing password protected ssh keys so I've created an issue here #20598 that will be printed out in the console whenever a user attempts to store one, this will let us get some idea of how much we should prioritise adding this feature.

Testing setup

I used a docker container to run the module against, feel free to use it or any other ssh instance you like, I'll leave instructions for the docker box below
First you'll need an ssh key

ssh-keygen -t ed25519 -C "[email protected]"

saveit somewhere you'll remember

docker run --rm -d \                                                                                                                                                                                                                      
  --name=openssh-server \
  --hostname=openssh-server \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Etc/UTC \
  -e PUBLIC_KEY_FILE=/path/to/public_key.pub \ # key you just created
  -e PASSWORD_ACCESS=false \
  -e USER_PASSWORD=password \
  -e USER_NAME=username \
  -e LOG_STDOUT=true \
  -p 2222:2222 \
  -v /path/to/config/folder:/config \
  lscr.io/linuxserver/openssh-server:latest

sometimes the public key isn't added to authorized hosts so you may need to do that manually

cat /path/to/public_key.pub >> ./authorized_keys

Now verify it works with

ssh -i ./private_key [email protected] -p 2222

And ensure a password isn't required, you should get a shell

Testing

  • Spin up your ssh server
  • Verify you can connect manually
  • Startup msfconsole
  • use auxiliary/scanner/ssh/ssh_login_pubkey
  • run RHOSTS=127.0.0.1 RPORT=2222 PRIVATE_KEY=file:/path/to/private_key USERNAME=username createsession=true
  • run RHOSTS=127.0.0.1 RPORT=2222 KEY_PATH=/path/to/private_key USERNAME=username createsession=true
  • Verify both work and give you an interactable session

Copy link
Contributor

@smcintyre-r7 smcintyre-r7 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So I noticed a few issues:

Stack Trace when CreateSession=true

When I run the module with CreateSession=true, it does authenticate but then there's this stack trace and no session is opened.

msf auxiliary(scanner/ssh/ssh_login_pubkey) > run CreateSession=true
[*] 192.168.159.128:2222 SSH - Testing Cleartext Keys
[*] 192.168.159.128:2222 - Testing 1 key from /home/smcintyre/.ssh/id_ed25519
[+] 192.168.159.128:2222 - Success: 'username:-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACAaxchV/ZDiDi2xNIXxWNiZvKjfI0dE1RzY0MhPg/oHSQAAAJjnF+5c5xfu
XAAAAAtzc2gtZWQyNTUxOQAAACAaxchV/ZDiDi2xNIXxWNiZvKjfI0dE1RzY0MhPg/oHSQ
AAAECpJJ0W7Yh7eBXIHpVh8EM3qXbPUiPVjIUMnCBj2dnNjhrFyFX9kOIOLbE0hfFY2Jm8
qN8jR0TVHNjQyE+D+gdJAAAAEWVtYWlsQGV4YW1wbGUuY29tAQIDBA==
-----END OPENSSH PRIVATE KEY-----
' 'uid=1000(username) gid=1000(users) groups=1000(users) Linux openssh-server 6.16.4-200.fc42.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Aug 28 19:47:10 UTC 2025 x86_64 GNU/Linux '
[!] 192.168.159.128:2222 - LOGIN FAILED: {:private_data=>"-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW\nQyNTUxOQAAACAaxchV/ZDiDi2xNIXxWNiZvKjfI0dE1RzY0MhPg/oHSQAAAJjnF+5c5xfu\nXAAAAAtzc2gtZWQyNTUxOQAAACAaxchV/ZDiDi2xNIXxWNiZvKjfI0dE1RzY0MhPg/oHSQ\nAAAECpJJ0W7Yh7eBXIHpVh8EM3qXbPUiPVjIUMnCBj2dnNjhrFyFX9kOIOLbE0hfFY2Jm8\nqN8jR0TVHNjQyE+D+gdJAAAAEWVtYWlsQGV4YW1wbGUuY29tAQIDBA==\n-----END OPENSSH PRIVATE KEY-----\n", :private_type=>:ssh_key, :username=>"username", :realm_key=>nil, :realm_value=>nil} - Unhandled error - scan may not produce correct results: class or module required - ["/home/smcintyre/Repositories/metasploit-framework.pr/modules/auxiliary/scanner/ssh/ssh_login_pubkey.rb:186:in `is_a?'", "/home/smcintyre/Repositories/metasploit-framework.pr/modules/auxiliary/scanner/ssh/ssh_login_pubkey.rb:186:in `block in run_host'", "/home/smcintyre/Repositories/metasploit-framework.pr/lib/metasploit/framework/login_scanner/base.rb:237:in `block in scan!'", "/home/smcintyre/Repositories/metasploit-framework.pr/lib/metasploit/framework/login_scanner/base.rb:182:in `block in each_credential'", "/home/smcintyre/Repositories/metasploit-framework.pr/modules/auxiliary/scanner/ssh/ssh_login_pubkey.rb:307:in `block in each'", "/home/smcintyre/Repositories/metasploit-framework.pr/modules/auxiliary/scanner/ssh/ssh_login_pubkey.rb:314:in `block in each_key'", "/home/smcintyre/.rvm/rubies/ruby-3.3.8/lib/ruby/3.3.0/set.rb:501:in `each_key'", "/home/smcintyre/.rvm/rubies/ruby-3.3.8/lib/ruby/3.3.0/set.rb:501:in `each'", "/home/smcintyre/Repositories/metasploit-framework.pr/modules/auxiliary/scanner/ssh/ssh_login_pubkey.rb:313:in `each_key'", "/home/smcintyre/Repositories/metasploit-framework.pr/modules/auxiliary/scanner/ssh/ssh_login_pubkey.rb:306:in `each'", "/home/smcintyre/Repositories/metasploit-framework.pr/lib/metasploit/framework/login_scanner/base.rb:144:in `each_credential'", "/home/smcintyre/Repositories/metasploit-framework.pr/lib/metasploit/framework/login_scanner/base.rb:208:in `scan!'", "/home/smcintyre/Repositories/metasploit-framework.pr/modules/auxiliary/scanner/ssh/ssh_login_pubkey.rb:171:in `run_host'", "/home/smcintyre/Repositories/metasploit-framework.pr/lib/msf/core/auxiliary/scanner.rb:116:in `block (2 levels) in run'", "/home/smcintyre/Repositories/metasploit-framework.pr/lib/msf/core/thread_manager.rb:105:in `block in spawn'"]
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(scanner/ssh/ssh_login_pubkey) >

Stack Trace with KEY_PASS

I tested password-protected ECDSA keys too. When the KEY_PASS argument is incrorrect, it fails with a relatively useful error that it couldn't decrypt the key. When the password is correct however it crashes and doesn't authenticate:

msf auxiliary(scanner/ssh/ssh_login_pubkey) > run
[*] 192.168.159.128:2222 SSH - Testing Cleartext Keys
[*] 192.168.159.128:2222 - Testing 1 key from /home/smcintyre/.ssh/id_ed25519.pass
[!] 192.168.159.128:2222 - LOGIN FAILED: {:private_data=>"-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABCvE4pTM0\nHno3zH/A1CYleUAAAAGAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIFeuhu9e9BoQQjtK\nK7eN/zLeeWhpdRvEFQV/9OUsgzInAAAAoNCdDU1msaZKALnDx5+8ormsglTi9B4YUjDTnm\n8bVMXyFWCBlTfFMxThXNE/tE0c+UhAPqyBSP8DwyvHH5rE9cO7mAZXUzzMGjRojtQxvbqi\nRIb0gnzKOeUL6TlSVWT17zc9uNhi4ljBJpGmR4c8eLWL2pYShm4cAH0AmcmHXkj1uVs5iP\nCkI7uwPUKg6zwpXBilwwCbxfFxxJqpto3xzrA=\n-----END OPENSSH PRIVATE KEY-----\n", :private_type=>:ssh_key, :username=>"username", :realm_key=>nil, :realm_value=>nil} - Unhandled error - scan may not produce correct results: Decrypt failed on private key - ["/home/smcintyre/.rvm/gems/ruby-3.3.8@metasploit-framework/gems/net-ssh-7.3.0/lib/net/ssh/authentication/ed25519.rb:92:in `read'", "/home/smcintyre/.rvm/gems/ruby-3.3.8@metasploit-framework/gems/net-ssh-7.3.0/lib/net/ssh/key_factory.rb:124:in `read'", "/home/smcintyre/.rvm/gems/ruby-3.3.8@metasploit-framework/gems/net-ssh-7.3.0/lib/net/ssh/key_factory.rb:58:in `load_data_private_key'", "/home/smcintyre/.rvm/gems/ruby-3.3.8@metasploit-framework/gems/net-ssh-7.3.0/lib/net/ssh/authentication/key_manager.rb:293:in `block in load_identities'", "/home/smcintyre/.rvm/gems/ruby-3.3.8@metasploit-framework/gems/net-ssh-7.3.0/lib/net/ssh/authentication/key_manager.rb:281:in `map'", "/home/smcintyre/.rvm/gems/ruby-3.3.8@metasploit-framework/gems/net-ssh-7.3.0/lib/net/ssh/authentication/key_manager.rb:281:in `load_identities'", "/home/smcintyre/.rvm/gems/ruby-3.3.8@metasploit-framework/gems/net-ssh-7.3.0/lib/net/ssh/authentication/key_manager.rb:137:in `each_identity'", "/home/smcintyre/.rvm/gems/ruby-3.3.8@metasploit-framework/gems/net-ssh-7.3.0/lib/net/ssh/authentication/methods/publickey.rb:18:in `authenticate'", "/home/smcintyre/.rvm/gems/ruby-3.3.8@metasploit-framework/gems/net-ssh-7.3.0/lib/net/ssh/authentication/session.rb:88:in `block in authenticate'", "/home/smcintyre/.rvm/gems/ruby-3.3.8@metasploit-framework/gems/net-ssh-7.3.0/lib/net/ssh/authentication/session.rb:72:in `each'", "/home/smcintyre/.rvm/gems/ruby-3.3.8@metasploit-framework/gems/net-ssh-7.3.0/lib/net/ssh/authentication/session.rb:72:in `authenticate'", "/home/smcintyre/.rvm/gems/ruby-3.3.8@metasploit-framework/gems/net-ssh-7.3.0/lib/net/ssh.rb:262:in `start'", "/home/smcintyre/Repositories/metasploit-framework.pr/lib/metasploit/framework/login_scanner/ssh.rb:77:in `block in attempt_login'", "/home/smcintyre/.rvm/gems/ruby-3.3.8@metasploit-framework/gems/timeout-0.4.3/lib/timeout.rb:185:in `block in timeout'", "/home/smcintyre/.rvm/gems/ruby-3.3.8@metasploit-framework/gems/timeout-0.4.3/lib/timeout.rb:38:in `handle_timeout'", "/home/smcintyre/.rvm/gems/ruby-3.3.8@metasploit-framework/gems/timeout-0.4.3/lib/timeout.rb:194:in `timeout'", "/home/smcintyre/Repositories/metasploit-framework.pr/lib/metasploit/framework/login_scanner/ssh.rb:76:in `attempt_login'", "/home/smcintyre/Repositories/metasploit-framework.pr/lib/metasploit/framework/login_scanner/base.rb:234:in `block in scan!'", "/home/smcintyre/Repositories/metasploit-framework.pr/lib/metasploit/framework/login_scanner/base.rb:182:in `block in each_credential'", "/home/smcintyre/Repositories/metasploit-framework.pr/modules/auxiliary/scanner/ssh/ssh_login_pubkey.rb:307:in `block in each'", "/home/smcintyre/Repositories/metasploit-framework.pr/modules/auxiliary/scanner/ssh/ssh_login_pubkey.rb:314:in `block in each_key'", "/home/smcintyre/.rvm/rubies/ruby-3.3.8/lib/ruby/3.3.0/set.rb:501:in `each_key'", "/home/smcintyre/.rvm/rubies/ruby-3.3.8/lib/ruby/3.3.0/set.rb:501:in `each'", "/home/smcintyre/Repositories/metasploit-framework.pr/modules/auxiliary/scanner/ssh/ssh_login_pubkey.rb:313:in `each_key'", "/home/smcintyre/Repositories/metasploit-framework.pr/modules/auxiliary/scanner/ssh/ssh_login_pubkey.rb:306:in `each'", "/home/smcintyre/Repositories/metasploit-framework.pr/lib/metasploit/framework/login_scanner/base.rb:144:in `each_credential'", "/home/smcintyre/Repositories/metasploit-framework.pr/lib/metasploit/framework/login_scanner/base.rb:208:in `scan!'", "/home/smcintyre/Repositories/metasploit-framework.pr/modules/auxiliary/scanner/ssh/ssh_login_pubkey.rb:171:in `run_host'", "/home/smcintyre/Repositories/metasploit-framework.pr/lib/msf/core/auxiliary/scanner.rb:116:in `block (2 levels) in run'", "/home/smcintyre/Repositories/metasploit-framework.pr/lib/msf/core/thread_manager.rb:105:in `block in spawn'"]
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(scanner/ssh/ssh_login_pubkey) > show options 

Module options (auxiliary/scanner/ssh/ssh_login_pubkey):

   Name              Current Setting                    Required  Description
   ----              ---------------                    --------  -----------
   ANONYMOUS_LOGIN   false                              yes       Attempt to login with a blank username and password
   BRUTEFORCE_SPEED  5                                  yes       How fast to bruteforce, from 0 to 5
   CreateSession     false                              no        Create a new session for every successful login
   DB_ALL_USERS      false                              no        Add all users in the current database to the list
   KEY_PASS          Password1!                         no        Passphrase for SSH private key(s)
   KEY_PATH          /home/smcintyre/.ssh/id_ed25519.p  no        Filename or directory of cleartext private keys. Filenames
                     ass                                           beginning with a dot, or ending in ".pub" will be skipped
                                                                  . Duplicate private keys will be ignored.
   PRIVATE_KEY                                          no        The string value of the private key that will be used. If
                                                                  you are using MSFConsole, this value should be set as file
                                                                  :PRIVATE_KEY_PATH. OpenSSH, RSA, DSA, and ECDSA private ke
                                                                  ys are supported.
   RHOSTS            192.168.159.128                    yes       The target host(s), see https://docs.metasploit.com/docs/u
                                                                  sing-metasploit/basics/using-metasploit.html
   RPORT             2222                               yes       The target port
   STOP_ON_SUCCESS   false                              yes       Stop guessing when a credential works for a host
   THREADS           1                                  yes       The number of concurrent threads (max one per host)
   USERNAME          username                           no        A specific username to authenticate as
   USER_FILE                                            no        File containing usernames, one per line
   VERBOSE           true                               yes       Whether to print output for all attempts


View the full module info with the info, or info -d command.

You can't see the password but the key was generated using:

sh-keygen -t ed25519 -C "[email protected]" 
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/smcintyre/.ssh/id_ed25519): /home/smcintyre/.ssh/id_ed25519.pass
Enter passphrase for "/home/smcintyre/.ssh/id_ed25519.pass" (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/smcintyre/.ssh/id_ed25519.pass
Your public key has been saved in /home/smcintyre/.ssh/id_ed25519.pass.pub
The key fingerprint is:
SHA256:OFmdpdSl16sQgjHqpD+MV9w71DuQbzOR7GYPL6WNI/g [email protected]
The key's randomart image is:
+--[ED25519 256]--+
|       o  .....  |
|      . +o +.. . |
|     o ...+.. . .|
|    + .+. = o.  .|
|   . .+oS= *   . |
|    + ... = +..  |
|   . =  .o %=.   |
|    . .. .==B.   |
|        .E. oo   |
+----[SHA256]-----+

@github-project-automation github-project-automation bot moved this from In Progress to Waiting on Contributor in Metasploit Kanban Sep 18, 2025
@dwelch-r7 dwelch-r7 force-pushed the fix-ssh-login-pubkey branch 3 times, most recently from 4924626 to 961c7eb Compare September 26, 2025 13:24
@dwelch-r7 dwelch-r7 force-pushed the fix-ssh-login-pubkey branch from 961c7eb to c4113e0 Compare October 7, 2025 12:49
@dwelch-r7 dwelch-r7 force-pushed the fix-ssh-login-pubkey branch from c4113e0 to 3355bf7 Compare October 7, 2025 14:16
@smcintyre-r7
Copy link
Contributor

Thanks for this last round of changes. I went back to retest the errors I previously ran into and confirmed that they've been addressed. I tested both RSA and ED25519 keys each with and without passwords. Everything appears to be working as intended now. I'll go ahead and merge the pre-requisite PR now so we can get this moved forward.

Testing Output
msf auxiliary(scanner/ssh/ssh_login_pubkey) > run
[*] 192.168.159.128:22 SSH - Testing Cleartext Keys
[*] 192.168.159.128:22 - Testing 1 key from /tmp/id_ed25519
[-] 192.168.159.128:22 - Failed: 'username:-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACAOvok32iWn4jz02wje3byn0OZmr69FjdzTHIGuG60XuAAAAJjDwM9Pw8DP
TwAAAAtzc2gtZWQyNTUxOQAAACAOvok32iWn4jz02wje3byn0OZmr69FjdzTHIGuG60XuA
AAAECxhhKylT1Iw0faHwBXYMRwpo9uhy9Vg4sp/4uh3t48gw6+iTfaJafiPPTbCN7dvKfQ
5mavr0WN3NMcga4brRe4AAAAEWVtYWlsQGV4YW1wbGUuY29tAQIDBA==
-----END OPENSSH PRIVATE KEY-----
'
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(scanner/ssh/ssh_login_pubkey) > set RPORT 2222
RPORT => 2222
msf auxiliary(scanner/ssh/ssh_login_pubkey) > run
[*] 192.168.159.128:2222 SSH - Testing Cleartext Keys
[*] 192.168.159.128:2222 - Testing 1 key from /tmp/id_ed25519
[+] 192.168.159.128:2222 - Success: 'username:-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACAOvok32iWn4jz02wje3byn0OZmr69FjdzTHIGuG60XuAAAAJjDwM9Pw8DP
TwAAAAtzc2gtZWQyNTUxOQAAACAOvok32iWn4jz02wje3byn0OZmr69FjdzTHIGuG60XuA
AAAECxhhKylT1Iw0faHwBXYMRwpo9uhy9Vg4sp/4uh3t48gw6+iTfaJafiPPTbCN7dvKfQ
5mavr0WN3NMcga4brRe4AAAAEWVtYWlsQGV4YW1wbGUuY29tAQIDBA==
-----END OPENSSH PRIVATE KEY-----
' 'uid=1000(username) gid=1000(users) groups=1000(users) Linux openssh-server 6.16.4-200.fc42.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Aug 28 19:47:10 UTC 2025 x86_64 GNU/Linux '
[*] SSH session 1 opened (192.168.159.128:37025 -> 192.168.159.128:2222) at 2025-10-08 13:57:43 -0400
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(scanner/ssh/ssh_login_pubkey) > run RHOSTS=192.168.159.128 RPORT=2222 PRIVATE_KEY=file:/tmp/id_ed25519
[*] 192.168.159.128:2222 SSH - Testing Cleartext Keys
[*] 192.168.159.128:2222 - Testing 1 key from /tmp/id_ed25519 and PRIVATE_KEY
[+] 192.168.159.128:2222 - Success: 'username:-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACAOvok32iWn4jz02wje3byn0OZmr69FjdzTHIGuG60XuAAAAJjDwM9Pw8DP
TwAAAAtzc2gtZWQyNTUxOQAAACAOvok32iWn4jz02wje3byn0OZmr69FjdzTHIGuG60XuA
AAAECxhhKylT1Iw0faHwBXYMRwpo9uhy9Vg4sp/4uh3t48gw6+iTfaJafiPPTbCN7dvKfQ
5mavr0WN3NMcga4brRe4AAAAEWVtYWlsQGV4YW1wbGUuY29tAQIDBA==
-----END OPENSSH PRIVATE KEY-----
' 'uid=1000(username) gid=1000(users) groups=1000(users) Linux openssh-server 6.16.4-200.fc42.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Aug 28 19:47:10 UTC 2025 x86_64 GNU/Linux '
[*] SSH session 2 opened (192.168.159.128:44531 -> 192.168.159.128:2222) at 2025-10-08 13:58:34 -0400
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(scanner/ssh/ssh_login_pubkey) > run RHOSTS=192.168.159.128 RPORT=2222 PRIVATE_KEY=file:/tmp/id_ed25519 CREATESESSION=false
[*] 192.168.159.128:2222 SSH - Testing Cleartext Keys
[*] 192.168.159.128:2222 - Testing 1 key from /tmp/id_ed25519 and PRIVATE_KEY
[+] 192.168.159.128:2222 - Success: 'username:-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACAOvok32iWn4jz02wje3byn0OZmr69FjdzTHIGuG60XuAAAAJjDwM9Pw8DP
TwAAAAtzc2gtZWQyNTUxOQAAACAOvok32iWn4jz02wje3byn0OZmr69FjdzTHIGuG60XuA
AAAECxhhKylT1Iw0faHwBXYMRwpo9uhy9Vg4sp/4uh3t48gw6+iTfaJafiPPTbCN7dvKfQ
5mavr0WN3NMcga4brRe4AAAAEWVtYWlsQGV4YW1wbGUuY29tAQIDBA==
-----END OPENSSH PRIVATE KEY-----
' 'uid=1000(username) gid=1000(users) groups=1000(users) Linux openssh-server 6.16.4-200.fc42.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Aug 28 19:47:10 UTC 2025 x86_64 GNU/Linux '
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(scanner/ssh/ssh_login_pubkey) > run RHOSTS=192.168.159.128 RPORT=2222 PRIVATE_KEY=file:/tmp/id_ed25519 CREATESESSION=true
[*] 192.168.159.128:2222 SSH - Testing Cleartext Keys
[*] 192.168.159.128:2222 - Testing 1 key from /tmp/id_ed25519 and PRIVATE_KEY
[+] 192.168.159.128:2222 - Success: 'username:-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACAOvok32iWn4jz02wje3byn0OZmr69FjdzTHIGuG60XuAAAAJjDwM9Pw8DP
TwAAAAtzc2gtZWQyNTUxOQAAACAOvok32iWn4jz02wje3byn0OZmr69FjdzTHIGuG60XuA
AAAECxhhKylT1Iw0faHwBXYMRwpo9uhy9Vg4sp/4uh3t48gw6+iTfaJafiPPTbCN7dvKfQ
5mavr0WN3NMcga4brRe4AAAAEWVtYWlsQGV4YW1wbGUuY29tAQIDBA==
-----END OPENSSH PRIVATE KEY-----
' 'uid=1000(username) gid=1000(users) groups=1000(users) Linux openssh-server 6.16.4-200.fc42.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Aug 28 19:47:10 UTC 2025 x86_64 GNU/Linux '
[*] SSH session 3 opened (192.168.159.128:35663 -> 192.168.159.128:2222) at 2025-10-08 13:58:44 -0400
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(scanner/ssh/ssh_login_pubkey) > sessions -K
[*] Killing all sessions...
[*] 192.168.159.128 - SSH session 1 closed.
[*] 192.168.159.128 - SSH session 2 closed.
[*] 192.168.159.128 - SSH session 3 closed.
msf auxiliary(scanner/ssh/ssh_login_pubkey) > run RHOSTS=192.168.159.128 RPORT=2222 KEY_PATH=/tmp/id_ed25519 CREATESESSION=true
[*] 192.168.159.128:2222 SSH - Testing Cleartext Keys
[*] 192.168.159.128:2222 - Testing 1 key from /tmp/id_ed25519
[+] 192.168.159.128:2222 - Success: 'username:-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACAOvok32iWn4jz02wje3byn0OZmr69FjdzTHIGuG60XuAAAAJjDwM9Pw8DP
TwAAAAtzc2gtZWQyNTUxOQAAACAOvok32iWn4jz02wje3byn0OZmr69FjdzTHIGuG60XuA
AAAECxhhKylT1Iw0faHwBXYMRwpo9uhy9Vg4sp/4uh3t48gw6+iTfaJafiPPTbCN7dvKfQ
5mavr0WN3NMcga4brRe4AAAAEWVtYWlsQGV4YW1wbGUuY29tAQIDBA==
-----END OPENSSH PRIVATE KEY-----
' 'uid=1000(username) gid=1000(users) groups=1000(users) Linux openssh-server 6.16.4-200.fc42.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Aug 28 19:47:10 UTC 2025 x86_64 GNU/Linux '
[*] SSH session 4 opened (192.168.159.128:44035 -> 192.168.159.128:2222) at 2025-10-08 13:58:59 -0400
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(scanner/ssh/ssh_login_pubkey) > run RHOSTS=192.168.159.128 RPORT=2222 KEY_PATH=/tmp/id_ed25519-pass CREATESESSION=true
[*] 192.168.159.128:2222 SSH - Testing Cleartext Keys
[-] Files that failed to be read:
	- /tmp/id_ed25519-pass: Decrypt failed on private key
[*] 192.168.159.128:2222 - Testing 0 keys from /tmp/id_ed25519-pass
[*] Error: 192.168.159.128: Metasploit::Framework::LoginScanner::Invalid Cred details can't be blank, Cred details can't be blank (Metasploit::Framework::LoginScanner::SSH)
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(scanner/ssh/ssh_login_pubkey) > run RHOSTS=192.168.159.128 RPORT=2222 KEY_PATH=/tmp/id_ed25519-pass KEY_PASS=Password1! CREATESESSION=true
[*] 192.168.159.128:2222 SSH - Testing Cleartext Keys
[*] 192.168.159.128:2222 - Testing 1 key from /tmp/id_ed25519-pass
[+] 192.168.159.128:2222 - Success: 'username:-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABC0ivP/rS
Gt4tP17hlaqhPdAAAAGAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAII0IvubXY7DMaN+F
ZuMiC1tMt/uy1xUQg8F3oGayD1mGAAAAoM5xeHe558X0XWYaXZmUQidw9kFSwmO2CmYMFx
t045uthM8TWww5jT8EaiR8yOR1QDojiZsYHcvo10n+SseQmYEVMqowwI89fUWf0j0O3j4s
hDKNFtbegCoDj30zpiaTSpV6aXjgVozvkwNXUkw4b3YLHe5qLjBgaLWIzMyv6nP/YpZ+yN
UKvCKa0oTnPjVmWSwasKA0BzOgVRuPZuCfZ/k=
-----END OPENSSH PRIVATE KEY-----
' 'uid=1000(username) gid=1000(users) groups=1000(users) Linux openssh-server 6.16.4-200.fc42.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Aug 28 19:47:10 UTC 2025 x86_64 GNU/Linux '
[*] 192.168.159.128:2222 - Failed to create credential: ActiveRecord::RecordInvalid Validation failed: Data Net::SSH::Authentication::ED25519::OpenSSHPrivateKeyLoader::DecryptError Decrypt failed on private key
[*] 192.168.159.128:2222 - We do not currently support storing password protected SSH keys: https://github.com/rapid7/metasploit-framework/issues/20598
[*] SSH session 5 opened (192.168.159.128:40957 -> 192.168.159.128:2222) at 2025-10-08 14:02:49 -0400
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(scanner/ssh/ssh_login_pubkey) > run RHOSTS=192.168.159.128 RPORT=2222 PRIVATE_KEY=file:/tmp/id_ed25519-pass KEY_PASS=Password1! CREATESESSION=true
msf auxiliary(scanner/ssh/ssh_login_pubkey) > run RHOSTS=192.168.159.128 RPORT=2222 PRIVATE_KEY=file:/tmp/id_ed25519-pass KEY_PASS=Password1! CREATESESSION=true
[*] 192.168.159.128:2222 SSH - Testing Cleartext Keys
[*] 192.168.159.128:2222 - Testing 1 key from /tmp/id_ed25519 and PRIVATE_KEY
[+] 192.168.159.128:2222 - Success: 'username:-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABC0ivP/rS
Gt4tP17hlaqhPdAAAAGAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAII0IvubXY7DMaN+F
ZuMiC1tMt/uy1xUQg8F3oGayD1mGAAAAoM5xeHe558X0XWYaXZmUQidw9kFSwmO2CmYMFx
t045uthM8TWww5jT8EaiR8yOR1QDojiZsYHcvo10n+SseQmYEVMqowwI89fUWf0j0O3j4s
hDKNFtbegCoDj30zpiaTSpV6aXjgVozvkwNXUkw4b3YLHe5qLjBgaLWIzMyv6nP/YpZ+yN
UKvCKa0oTnPjVmWSwasKA0BzOgVRuPZuCfZ/k=
-----END OPENSSH PRIVATE KEY-----
' 'uid=1000(username) gid=1000(users) groups=1000(users) Linux openssh-server 6.16.4-200.fc42.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Aug 28 19:47:10 UTC 2025 x86_64 GNU/Linux '
[*] 192.168.159.128:2222 - Failed to create credential: ActiveRecord::RecordInvalid Validation failed: Data Net::SSH::Authentication::ED25519::OpenSSHPrivateKeyLoader::DecryptError Decrypt failed on private key
[*] 192.168.159.128:2222 - We do not currently support storing password protected SSH keys: https://github.com/rapid7/metasploit-framework/issues/20598
[*] SSH session 6 opened (192.168.159.128:39825 -> 192.168.159.128:2222) at 2025-10-08 14:04:36 -0400
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(scanner/ssh/ssh_login_pubkey) > run RHOSTS=192.168.159.128 RPORT=2222 PRIVATE_KEY=file:/tmp/id_rsa-pass KEY_PASS=Password1!
[*] 192.168.159.128:2222 SSH - Testing Cleartext Keys
[*] 192.168.159.128:2222 - Testing 1 key from /tmp/id_ed25519 and PRIVATE_KEY
[+] 192.168.159.128:2222 - Success: 'username:-----BEGIN OPENSSH PRIVATE KEY-----
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
iP3865som6t+mnKJUCrbfmPnc1I=
-----END OPENSSH PRIVATE KEY-----
' 'uid=1000(username) gid=1000(users) groups=1000(users) Linux openssh-server 6.16.4-200.fc42.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Aug 28 19:47:10 UTC 2025 x86_64 GNU/Linux '
[*] 192.168.159.128:2222 - Failed to create credential: ActiveRecord::RecordInvalid Validation failed: Data Net::SSH::Authentication::ED25519::OpenSSHPrivateKeyLoader::DecryptError Decrypt failed on private key
[*] 192.168.159.128:2222 - We do not currently support storing password protected SSH keys: https://github.com/rapid7/metasploit-framework/issues/20598
[*] SSH session 7 opened (192.168.159.128:44001 -> 192.168.159.128:2222) at 2025-10-08 14:06:33 -0400
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(scanner/ssh/ssh_login_pubkey) > run RHOSTS=192.168.159.128 RPORT=2222 PRIVATE_KEY=file:/tmp/id_rsa KEY_PASS=Password1!
[*] 192.168.159.128:2222 SSH - Testing Cleartext Keys
[*] 192.168.159.128:2222 - Testing 1 key from /tmp/id_ed25519 and PRIVATE_KEY
[+] 192.168.159.128:2222 - Success: 'username:-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----
' 'uid=1000(username) gid=1000(users) groups=1000(users) Linux openssh-server 6.16.4-200.fc42.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Aug 28 19:47:10 UTC 2025 x86_64 GNU/Linux '
[*] SSH session 8 opened (192.168.159.128:35867 -> 192.168.159.128:2222) at 2025-10-08 14:06:37 -0400
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(scanner/ssh/ssh_login_pubkey) > 

@dwelch-r7 dwelch-r7 force-pushed the fix-ssh-login-pubkey branch from 3355bf7 to 8c5c395 Compare October 9, 2025 11:36
@dwelch-r7 dwelch-r7 marked this pull request as ready for review October 9, 2025 11:36
@github-project-automation github-project-automation bot moved this from Waiting on Contributor to In Progress in Metasploit Kanban Oct 9, 2025
@smcintyre-r7 smcintyre-r7 merged commit 27d0e63 into rapid7:master Oct 9, 2025
61 checks passed
@github-project-automation github-project-automation bot moved this from In Progress to Done in Metasploit Kanban Oct 9, 2025
@smcintyre-r7
Copy link
Contributor

Release Notes

This fixes multiple issues that were present in the auxiliary/scanner/ssh/ssh_login_pubkey module.

@jharris-r7 jharris-r7 added the rn-fix release notes fix label Oct 17, 2025
@smcintyre-r7 smcintyre-r7 linked an issue Oct 17, 2025 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

rn-fix release notes fix

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

ssh_login_pubkey Has Multiple Issues

3 participants