Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR ensures that an SSH session dies when it encounters errors. For example, the
shell
request can fail asynchronously, leading to an SSH session that cannot be interacted with, as was the case with a Windows VM that has installed OpenSSH version 8.1.0.0 withchoco install openssh --version 8.1.0-beta1
.As this
shell
request happens asynchronously, we end up with a session that has been reported as open and that the credential works, but the session then dies afterwards.This PR also allows for the passing of an error_callback method, allowing us to log out the errors to the user:
Verification
List the steps needed to make sure this thing works
msfconsole
Before
An SSH session is broken but has not been killed. When interacting with it, no data is sent through the
shell
channel as it has died silently.After
Session is killed, and an error is logged with the server version if the error_callback is provided as the command stream has no access to
print_error
itself, so it is passed in.