Class SessionHelper
java.lang.Object
org.apache.sshd.common.util.logging.AbstractLoggingBean
org.apache.sshd.common.util.closeable.IoBaseCloseable
org.apache.sshd.common.util.closeable.AbstractCloseable
org.apache.sshd.common.util.closeable.AbstractInnerCloseable
org.apache.sshd.common.kex.AbstractKexFactoryManager
org.apache.sshd.common.session.helpers.SessionHelper
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Channel
,AttributeRepository
,AttributeStore
,MutableUserHolder
,UsernameHolder
,ChannelListenerManager
,ChannelStreamWriterResolver
,ChannelStreamWriterResolverManager
,Closeable
,FactoryManagerHolder
,PortForwardingEventListenerManager
,PortForwardingInformationProvider
,KexExtensionHandlerManager
,KexFactoryManager
,PropertyResolver
,ReservedSessionMessagesManager
,Session
,SessionContext
,SessionDisconnectHandlerManager
,SessionHeartbeatController
,SessionListenerManager
,UnknownChannelReferenceHandlerManager
,SignatureFactoriesHolder
,SignatureFactoriesManager
,ConnectionEndpointsIndicator
- Direct Known Subclasses:
AbstractSession
Contains split code in order to make
AbstractSession
class smaller-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.sshd.common.util.closeable.AbstractCloseable
AbstractCloseable.State
Nested classes/interfaces inherited from interface org.apache.sshd.common.AttributeRepository
AttributeRepository.AttributeKey<T extends Object>
Nested classes/interfaces inherited from interface org.apache.sshd.common.session.SessionHeartbeatController
SessionHeartbeatController.HeartbeatType
-
Field Summary
Modifier and TypeFieldDescriptionprotected Instant
protected Instant
protected Map<KexProposalOption,
String> Stores the initial KEX proposal after it has been run through the hooks allowing client code to modify it; seegetKexProposal()
.Fields inherited from class org.apache.sshd.common.util.closeable.AbstractCloseable
closeFuture, futureLock, state
Fields inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
log
Fields inherited from interface org.apache.sshd.common.channel.throttle.ChannelStreamWriterResolver
NONE
Fields inherited from interface org.apache.sshd.common.PropertyResolver
EMPTY
Fields inherited from interface org.apache.sshd.common.session.SessionContext
DEFAULT_SSH_VERSION_PREFIX, FALLBACK_SSH_VERSION_PREFIX, MAX_VERSION_LINE_LENGTH
-
Constructor Summary
ModifierConstructorDescriptionprotected
SessionHelper
(boolean serverSession, FactoryManager factoryManager, IoSession ioSession) Create a new session. -
Method Summary
Modifier and TypeMethodDescriptionprotected long
calculateNextIgnorePacketCount
(Random r, long freq, int variance) protected TimeoutIndicator
checkAuthenticationTimeout
(Instant now, Duration authTimeout) Checks if authentication timeout expiredprotected TimeoutIndicator
Checks whether the session has timed out (both authentication and idle timeouts are checked).protected TimeoutIndicator
checkIdleTimeout
(Instant now, Duration idleTimeout) Checks if idle timeout expiredvoid
<T> T
computeAttributeIfAbsent
(AttributeRepository.AttributeKey<T> key, Function<? super AttributeRepository.AttributeKey<T>, ? extends T> resolver) protected Map<KexProposalOption,
String> createProposal
(String hostKeyTypes) Create our proposal for SSH negotiationvoid
disconnect
(int reason, String msg) Send a disconnect packet with the given reason and message.protected void
doInvokeDebugMessageHandler
(Buffer buffer) Invoked byhandleDebug(Buffer)
after validating that the buffer structure seems well-formed and also resetting the idle timeout.protected void
doInvokeIgnoreMessageHandler
(Buffer buffer) Invoked byhandleDebug(Buffer)
after validating that the buffer structure seems well-formed and also resetting the idle timeout.protected boolean
doInvokeUnimplementedMessageHandler
(int cmd, Buffer buffer) doReadIdentification
(Buffer buffer, boolean server) Read the remote identification from this buffer.void
Handle any exceptions that occurred on this session.<T> T
int
getBoundLocalPortForwards
(int port) getBoundRemotePortForward
(int port) protected abstract ConnectionService
protected Forwarder
protected Map<KexProposalOption,
String> Retrieves this side's initial proposal for KEX negotiation.Check if timeout has occurred.protected void
handleDebug
(Buffer buffer) protected void
handleDisconnect
(int code, String msg, String lang, Buffer buffer) protected void
handleDisconnect
(Buffer buffer) protected void
handleIgnore
(Buffer buffer) protected void
handleUnimplemented
(Buffer buffer) protected void
invokeSessionSignaller
(Invoker<SessionListener, Void> invoker) boolean
boolean
isLocalPortForwardingStartedForPort
(int port) Test if local port forwarding is startedboolean
isRemotePortForwardingStartedForPort
(int port) Test if remote port forwarding is startedboolean
protected Map<KexProposalOption,
String> mergeProposals
(Map<KexProposalOption, String> current, Map<KexProposalOption, String> proposal) protected Buffer
preProcessEncodeBuffer
(int cmd, Buffer buffer) Invoked by the session before encoding the buffer in order to make sure that it is at least of sizeSSH_PACKET_HEADER_LEN
.<T> T
Re-start the authentication timeout timerRe-start idle timeout timerprotected byte[]
Method used while putting new keys into use that will resize the key used to initialize the cipher to the needed length.protected String
Computes the list of available host key signature algorithms supported.protected abstract String
Computes the list of available host key signature algorithms supported.protected String
resolveIdentificationString
(String configPropName) Resolves the identification to send to the peer session by consulting the associatedFactoryManager
.protected SocketAddress
resolvePeerAddress
(SocketAddress knownAddress) protected ReservedSessionMessagesHandler
protected String
resolveSessionKexProposal
(String hostKeyTypes) Check if current manager has a specific handler set for it - if not, try and resolve one from the "parent" container (if any)sendDebugMessage
(boolean display, Object msg, String lang) Sends anSSH_MSG_DEBUG
to the peer sessionprotected IoWriteFuture
sendIdentification
(String version, List<String> extraLines) Send our identification.sendIgnoreMessage
(byte... data) Sends anSSH_MSG_IGNORE
to the peer sessionprotected IoWriteFuture
sendNotImplemented
(long seqNoValue) Sends aSSH_MSG_UNIMPLEMENTED
message<T> T
setAttribute
(AttributeRepository.AttributeKey<T> key, T value) void
void
void
void
setSessionDisconnectHandler
(SessionDisconnectHandler sessionDisconnectHandler) void
setUnknownChannelReferenceHandler
(UnknownChannelReferenceHandler unknownChannelReferenceHandler) void
setUsername
(String username) protected void
signalDisconnect
(int code, String msg, String lang, boolean initiator) protected void
signalDisconnect
(SessionListener listener, int code, String msg, String lang, boolean initiator) protected void
protected void
signalExceptionCaught
(SessionListener listener, Throwable t) protected void
signalNegotiationEnd
(Map<KexProposalOption, String> c2sOptions, Map<KexProposalOption, String> s2cOptions, Map<KexProposalOption, String> negotiatedGuess, Throwable reason) protected void
signalNegotiationEnd
(SessionListener listener, Map<KexProposalOption, String> c2sOptions, Map<KexProposalOption, String> s2cOptions, Map<KexProposalOption, String> negotiatedGuess, Throwable reason) protected void
protected void
signalNegotiationOptionsCreated
(SessionListener listener, Map<KexProposalOption, String> proposal) protected void
signalNegotiationStart
(Map<KexProposalOption, String> c2sOptions, Map<KexProposalOption, String> s2cOptions) protected void
signalNegotiationStart
(SessionListener listener, Map<KexProposalOption, String> c2sOptions, Map<KexProposalOption, String> s2cOptions) protected void
signalPeerIdentificationReceived
(String version, List<String> extraLines) protected void
signalPeerIdentificationReceived
(SessionListener listener, String version, List<String> extraLines) protected void
signalReadPeerIdentificationLine
(String line, List<String> extraLines) protected void
signalReadPeerIdentificationLine
(SessionListener listener, String version, List<String> extraLines) protected void
signalSendIdentification
(String version, List<String> extraLines) protected void
signalSendIdentification
(SessionListener listener, String version, List<String> extraLines) protected void
protected void
signalSessionClosed
(SessionListener listener) protected void
signalSessionCreated
(IoSession ioSession) protected void
signalSessionCreated
(SessionListener listener) protected void
signalSessionEstablished
(IoSession ioSession) protected void
signalSessionEstablished
(SessionListener listener) protected void
Sends a session event to all currently registered session listenersprotected void
signalSessionEvent
(SessionListener listener, SessionListener.Event event) toString()
Methods inherited from class org.apache.sshd.common.kex.AbstractKexFactoryManager
getCipherFactories, getCompressionFactories, getDelegate, getKexExtensionHandler, getKeyExchangeFactories, getMacFactories, getSignatureFactories, resolveEffectiveFactories, resolveEffectiveProvider, setCipherFactories, setCompressionFactories, setKexExtensionHandler, setKeyExchangeFactories, setMacFactories, setSignatureFactories
Methods inherited from class org.apache.sshd.common.util.closeable.AbstractInnerCloseable
doCloseGracefully, doCloseImmediately, getInnerCloseable
Methods inherited from class org.apache.sshd.common.util.closeable.AbstractCloseable
addCloseFutureListener, builder, close, getFutureLock, isClosed, isClosing, preClose, removeCloseFutureListener
Methods inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
debug, debug, debug, debug, debug, error, error, error, error, error, getSimplifiedLogger, info, info, warn, warn, warn, warn, warn, warn, warn, warn
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.apache.sshd.common.channel.ChannelListenerManager
addChannelListener, getChannelListenerProxy, removeChannelListener
Methods inherited from interface org.apache.sshd.common.channel.throttle.ChannelStreamWriterResolverManager
resolveChannelStreamWriter
Methods inherited from interface org.apache.sshd.common.Closeable
addCloseFutureListener, close, close, isClosed, isClosing, isOpen, removeCloseFutureListener
Methods inherited from interface org.apache.sshd.common.kex.extension.KexExtensionHandlerManager
getKexExtensionHandler, setKexExtensionHandler
Methods inherited from interface org.apache.sshd.common.kex.KexFactoryManager
getCipherFactories, getCipherFactoriesNameList, getCipherFactoriesNames, getCompressionFactories, getCompressionFactoriesNameList, getCompressionFactoriesNames, getKeyExchangeFactories, getMacFactories, getMacFactoriesNameList, getMacFactoriesNames, setCipherFactories, setCipherFactoriesNameList, setCipherFactoriesNames, setCipherFactoriesNames, setCompressionFactories, setCompressionFactoriesNameList, setCompressionFactoriesNames, setCompressionFactoriesNames, setKeyExchangeFactories, setMacFactories, setMacFactoriesNameList, setMacFactoriesNames, setMacFactoriesNames
Methods inherited from interface org.apache.sshd.common.forward.PortForwardingEventListenerManager
addPortForwardingEventListener, getPortForwardingEventListenerProxy, removePortForwardingEventListener
Methods inherited from interface org.apache.sshd.common.PropertyResolver
getBoolean, getBooleanProperty, getCharset, getInteger, getIntProperty, getLong, getLongProperty, getObject, getString, getStringProperty, isEmpty
Methods inherited from interface org.apache.sshd.common.session.Session
createBuffer, createBuffer, getKex, getLocalAddress, getRemoteAddress, getService, prepareBuffer, reExchangeKeys, request, request, request, request, resolveAttribute, startService, writePacket, writePacket, writePacket, writePacket
Methods inherited from interface org.apache.sshd.common.session.SessionContext
getCipherInformation, getClientKexProposals, getClientVersion, getCompressionInformation, getKexNegotiationResult, getKexState, getMacInformation, getNegotiatedKexParameter, getServerKexProposals, getServerVersion, getSessionId
Methods inherited from interface org.apache.sshd.common.session.SessionHeartbeatController
disableSessionHeartbeat, getSessionHeartbeatInterval, getSessionHeartbeatType, setSessionHeartbeat, setSessionHeartbeat
Methods inherited from interface org.apache.sshd.common.session.SessionListenerManager
addSessionListener, getSessionListenerProxy, removeSessionListener
Methods inherited from interface org.apache.sshd.common.signature.SignatureFactoriesHolder
getSignatureFactories, getSignatureFactoriesNameList, getSignatureFactoriesNames
Methods inherited from interface org.apache.sshd.common.signature.SignatureFactoriesManager
setSignatureFactories, setSignatureFactoriesNameList, setSignatureFactoriesNames, setSignatureFactoriesNames
-
Field Details
-
authStart
-
idleStart
-
initialKexProposal
Stores the initial KEX proposal after it has been run through the hooks allowing client code to modify it; seegetKexProposal()
. The same proposal is then used for the initial KEX and for any re-KEX.
-
-
Constructor Details
-
SessionHelper
Create a new session.- Parameters:
serverSession
-true
if this is a server session,false
if client onefactoryManager
- the factory managerioSession
- the underlying I/O session
-
-
Method Details
-
getIoSession
- Specified by:
getIoSession
in interfaceSession
- Returns:
- The
IoSession
associated to this session
-
isServerSession
public boolean isServerSession()- Specified by:
isServerSession
in interfaceSessionContext
-
getFactoryManager
- Specified by:
getFactoryManager
in interfaceFactoryManagerHolder
- Returns:
- The currently associated
FactoryManager
-
getParentPropertyResolver
- Specified by:
getParentPropertyResolver
in interfacePropertyResolver
-
getProperties
- Specified by:
getProperties
in interfacePropertyResolver
-
getAttributesCount
public int getAttributesCount()- Specified by:
getAttributesCount
in interfaceAttributeRepository
-
getAttribute
- Specified by:
getAttribute
in interfaceAttributeRepository
-
attributeKeys
- Specified by:
attributeKeys
in interfaceAttributeRepository
-
computeAttributeIfAbsent
public <T> T computeAttributeIfAbsent(AttributeRepository.AttributeKey<T> key, Function<? super AttributeRepository.AttributeKey<T>, ? extends T> resolver) - Specified by:
computeAttributeIfAbsent
in interfaceAttributeStore
-
setAttribute
- Specified by:
setAttribute
in interfaceAttributeStore
-
removeAttribute
- Specified by:
removeAttribute
in interfaceAttributeStore
-
clearAttributes
public void clearAttributes()- Specified by:
clearAttributes
in interfaceAttributeStore
-
getUsername
- Specified by:
getUsername
in interfaceUsernameHolder
-
setUsername
- Specified by:
setUsername
in interfaceMutableUserHolder
-
isAuthenticated
public boolean isAuthenticated()- Specified by:
isAuthenticated
in interfaceSessionContext
-
setAuthenticated
- Specified by:
setAuthenticated
in interfaceSession
- Throws:
IOException
-
checkForTimeouts
Checks whether the session has timed out (both authentication and idle timeouts are checked). If the session has timed out, a DISCONNECT message will be sent.- Returns:
- An indication whether timeout has been detected
- Throws:
IOException
- If failed to check- See Also:
-
getAuthTimeoutStart
- Specified by:
getAuthTimeoutStart
in interfaceSession
- Returns:
- The timestamp value (milliseconds since EPOCH) when timer was started
-
resetAuthTimeout
Description copied from interface:Session
Re-start the authentication timeout timer- Specified by:
resetAuthTimeout
in interfaceSession
- Returns:
- The timestamp value (milliseconds since EPOCH) when timer was started
- See Also:
-
checkAuthenticationTimeout
Checks if authentication timeout expired- Parameters:
now
- The current time in millisauthTimeout
- The configured timeout - if non-positive then no timeout- Returns:
- A
TimeoutIndicator
specifying the timeout status and disconnect reason message if timeout expired,null
orNoTimeout
if no timeout occurred - See Also:
-
getIdleTimeoutStart
- Specified by:
getIdleTimeoutStart
in interfaceSession
- Returns:
- The timestamp value (milliseconds since EPOCH) when timer was started
-
checkIdleTimeout
Checks if idle timeout expired- Parameters:
now
- The current time in millisidleTimeout
- The configured timeout - if non-positive then no timeout- Returns:
- A
TimeoutIndicator
specifying the timeout status and disconnect reason message if timeout expired,null
orNoTimeout
if no timeout occurred - See Also:
-
resetIdleTimeout
Description copied from interface:Session
Re-start idle timeout timer- Specified by:
resetIdleTimeout
in interfaceSession
- Returns:
- The timestamp value (milliseconds since EPOCH) when timer was started
- See Also:
-
getTimeoutStatus
Description copied from interface:Session
Check if timeout has occurred.- Specified by:
getTimeoutStatus
in interfaceSession
- Returns:
- the timeout status - never
null
-
getReservedSessionMessagesHandler
- Specified by:
getReservedSessionMessagesHandler
in interfaceReservedSessionMessagesManager
- Returns:
- The currently registered
ReservedSessionMessagesHandler
- may benull
-
setReservedSessionMessagesHandler
- Specified by:
setReservedSessionMessagesHandler
in interfaceReservedSessionMessagesManager
- Parameters:
handler
- TheReservedSessionMessagesHandler
to use - may benull
-
getSessionDisconnectHandler
- Specified by:
getSessionDisconnectHandler
in interfaceSessionDisconnectHandlerManager
-
setSessionDisconnectHandler
- Specified by:
setSessionDisconnectHandler
in interfaceSessionDisconnectHandlerManager
-
handleIgnore
- Throws:
Exception
-
doInvokeIgnoreMessageHandler
Invoked byhandleDebug(Buffer)
after validating that the buffer structure seems well-formed and also resetting the idle timeout. By default, retrieves theReservedSessionMessagesHandler
and invokes itshandleIgnoreMessage
method. -
sendNotImplemented
Sends aSSH_MSG_UNIMPLEMENTED
message- Parameters:
seqNoValue
- The referenced sequence number- Returns:
- An
IoWriteFuture
that can be used to wait for packet write completion - Throws:
IOException
- if an error occurred sending the packet
-
handleUnimplemented
- Throws:
Exception
-
doInvokeUnimplementedMessageHandler
- Parameters:
cmd
- The unimplemented commandbuffer
- The inputBuffer
- Returns:
- Result of invoking
handleUnimplementedMessage
- Throws:
Exception
- if failed to handle the message
-
sendDebugMessage
Description copied from interface:Session
Sends anSSH_MSG_DEBUG
to the peer session- Specified by:
sendDebugMessage
in interfaceSession
- Parameters:
display
-true
if OK to display the message at the peer as-ismsg
- The message object whosetoString()
value to be used - ifnull
then the "null" string is sentlang
- The language -null
/empty if some pre-agreed default is used- Returns:
- An
IoWriteFuture
that can be used to check when the packet has actually been sent - Throws:
IOException
- if an error occurred when encoding or sending the packet- See Also:
-
handleDebug
- Throws:
Exception
-
doInvokeDebugMessageHandler
Invoked byhandleDebug(Buffer)
after validating that the buffer structure seems well-formed and also resetting the idle timeout. By default, retrieves theReservedSessionMessagesHandler
and invokes itshandleDebugMessage
method. -
resolveReservedSessionMessagesHandler
-
getUnknownChannelReferenceHandler
- Specified by:
getUnknownChannelReferenceHandler
in interfaceUnknownChannelReferenceHandlerManager
- Returns:
- The
UnknownChannelReferenceHandlerManager
to use - ifnull
then any reference to unknown channel causes anSshChannelNotFoundException
-
setUnknownChannelReferenceHandler
public void setUnknownChannelReferenceHandler(UnknownChannelReferenceHandler unknownChannelReferenceHandler) - Specified by:
setUnknownChannelReferenceHandler
in interfaceUnknownChannelReferenceHandlerManager
- Parameters:
unknownChannelReferenceHandler
- TheUnknownChannelReferenceHandlerManager
to use - ifnull
then any reference to unknown channel causes anSshChannelNotFoundException
-
resolveUnknownChannelReferenceHandler
Description copied from interface:UnknownChannelReferenceHandlerManager
Check if current manager has a specific handler set for it - if not, try and resolve one from the "parent" container (if any)- Specified by:
resolveUnknownChannelReferenceHandler
in interfaceUnknownChannelReferenceHandlerManager
- Returns:
- The resolved handler instance
-
getChannelStreamWriterResolver
- Specified by:
getChannelStreamWriterResolver
in interfaceChannelStreamWriterResolverManager
-
setChannelStreamWriterResolver
- Specified by:
setChannelStreamWriterResolver
in interfaceChannelStreamWriterResolverManager
-
resolveChannelStreamWriterResolver
- Specified by:
resolveChannelStreamWriterResolver
in interfaceChannelStreamWriterResolverManager
-
sendIgnoreMessage
Description copied from interface:Session
Sends anSSH_MSG_IGNORE
to the peer session- Specified by:
sendIgnoreMessage
in interfaceSession
- Parameters:
data
- The message data- Returns:
- An
IoWriteFuture
that can be used to check when the packet has actually been sent - Throws:
IOException
- if an error occurred when encoding or sending the packet- See Also:
-
signalSessionEstablished
- Throws:
Exception
-
signalSessionEstablished
-
signalSessionCreated
- Throws:
Exception
-
signalSessionCreated
-
signalSendIdentification
- Throws:
Exception
-
signalSendIdentification
protected void signalSendIdentification(SessionListener listener, String version, List<String> extraLines) -
signalReadPeerIdentificationLine
protected void signalReadPeerIdentificationLine(String line, List<String> extraLines) throws Exception - Throws:
Exception
-
signalReadPeerIdentificationLine
protected void signalReadPeerIdentificationLine(SessionListener listener, String version, List<String> extraLines) -
signalPeerIdentificationReceived
protected void signalPeerIdentificationReceived(String version, List<String> extraLines) throws Exception - Throws:
Exception
-
signalPeerIdentificationReceived
protected void signalPeerIdentificationReceived(SessionListener listener, String version, List<String> extraLines) -
signalSessionEvent
Sends a session event to all currently registered session listeners- Parameters:
event
- The event to send- Throws:
Exception
- If any of the registered listeners threw an exception.
-
signalSessionEvent
protected void signalSessionEvent(SessionListener listener, SessionListener.Event event) throws IOException - Throws:
IOException
-
invokeSessionSignaller
- Throws:
Throwable
-
resizeKey
Method used while putting new keys into use that will resize the key used to initialize the cipher to the needed length.- Parameters:
e
- the key to resizekdfSize
- the cipher key-derivation-factor (in bytes)hash
- the hash algorithmk
- the key exchange k parameterh
- the key exchange h parameter- Returns:
- the resized key
- Throws:
Exception
- if a problem occur while resizing the key
-
resolvePeerAddress
- Parameters:
knownAddress
- Any externally set peer address - e.g., due to some proxy mechanism meta-data- Returns:
- The external address if not
null
otherwise, theIoSession
peer address
-
calculateNextIgnorePacketCount
-
resolveIdentificationString
Resolves the identification to send to the peer session by consulting the associatedFactoryManager
. If a value is set, then it is appended to the standardSessionContext.DEFAULT_SSH_VERSION_PREFIX
. Otherwise a default value is returned consisting of the prefix and the core artifact name + version in uppercase - e.g.,' "SSH-2.0-APACHE-SSHD-1.2.3.4"- Parameters:
configPropName
- The property used to query the factory manager- Returns:
- The resolved identification value
-
sendIdentification
protected IoWriteFuture sendIdentification(String version, List<String> extraLines) throws Exception Send our identification.- Parameters:
version
- our identification to sendextraLines
- Extra lines to send - used only by server sessions- Returns:
IoWriteFuture
that can be used to wait for notification that identification has been send- Throws:
Exception
- If failed to send the packet
-
doReadIdentification
Read the remote identification from this buffer. If more data is needed, the buffer will be reset to its original state and anull
value will be returned. Else the identification string will be returned and the data read will be consumed from the buffer.- Parameters:
buffer
- the buffer containing the identification stringserver
-true
if it is called by the server session,false
if by the client session- Returns:
- A
List
of all received remote identification lines until the version line was read ornull
if more data is needed. The identification line is the last one in the list - Throws:
Exception
- if malformed identification found
-
resolveSessionKexProposal
- Throws:
IOException
-
resolveAvailableSignaturesProposal
Computes the list of available host key signature algorithms supported.- Returns:
- A comma-separated list of all the signature protocols to be included in the
proposal -
null
/empty if no proposal - Throws:
IOException
- If failed to read/parse the keys dataGeneralSecurityException
- If failed to generate the keys- See Also:
-
resolveAvailableSignaturesProposal
protected abstract String resolveAvailableSignaturesProposal(FactoryManager manager) throws IOException, GeneralSecurityException Computes the list of available host key signature algorithms supported.- Parameters:
manager
- TheFactoryManager
- Returns:
- A comma-separated list of all the signature protocols to be included in the
proposal -
null
/empty if no proposal - Throws:
IOException
- If failed to read/parse the keys dataGeneralSecurityException
- If failed to generate the keys
-
getKexProposal
Retrieves this side's initial proposal for KEX negotiation. If no proposal exists yet, one is created and passed though theKexExtensionHandler
and theSessionListener
for customization, otherwise the previously created proposal for the session is returned. -
createProposal
Create our proposal for SSH negotiation- Parameters:
hostKeyTypes
- The comma-separated list of supported host key types- Returns:
- The proposal
Map
- Throws:
IOException
- If internal problem - e.g., KEX extensions negotiation issue
-
mergeProposals
protected Map<KexProposalOption,String> mergeProposals(Map<KexProposalOption, String> current, Map<KexProposalOption, String> proposal) -
signalNegotiationOptionsCreated
-
signalNegotiationOptionsCreated
protected void signalNegotiationOptionsCreated(SessionListener listener, Map<KexProposalOption, String> proposal) -
signalNegotiationStart
protected void signalNegotiationStart(Map<KexProposalOption, String> c2sOptions, Map<KexProposalOption, String> s2cOptions) -
signalNegotiationStart
protected void signalNegotiationStart(SessionListener listener, Map<KexProposalOption, String> c2sOptions, Map<KexProposalOption, String> s2cOptions) -
signalNegotiationEnd
protected void signalNegotiationEnd(Map<KexProposalOption, String> c2sOptions, Map<KexProposalOption, String> s2cOptions, Map<KexProposalOption, String> negotiatedGuess, Throwable reason) -
signalNegotiationEnd
protected void signalNegotiationEnd(SessionListener listener, Map<KexProposalOption, String> c2sOptions, Map<KexProposalOption, String> s2cOptions, Map<KexProposalOption, String> negotiatedGuess, Throwable reason) -
preProcessEncodeBuffer
Invoked by the session before encoding the buffer in order to make sure that it is at least of sizeSSH_PACKET_HEADER_LEN
. This is required in order to efficiently handle the encoding. If necessary, it re-allocates a new buffer and returns it instead.- Parameters:
cmd
- The command stored in the bufferbuffer
- The originalBuffer
- assumed to be properly formatted and be of at least the required minimum length.- Returns:
- The adjusted
Buffer
. Note: users may use this method to totally alter the contents of the buffer being sent but it is highly discouraged as it may have unexpected results. - Throws:
IOException
- If failed to process the buffer
-
disconnect
Description copied from interface:Session
Send a disconnect packet with the given reason and message. Once the packet has been sent, the session will be closed asynchronously.- Specified by:
disconnect
in interfaceSession
- Parameters:
reason
- the reason code for this disconnectmsg
- the text message- Throws:
IOException
- if an error occurred sending the packet
-
handleDisconnect
- Throws:
Exception
-
handleDisconnect
- Throws:
Exception
-
signalDisconnect
-
signalDisconnect
protected void signalDisconnect(SessionListener listener, int code, String msg, String lang, boolean initiator) -
exceptionCaught
Handle any exceptions that occurred on this session. The session will be closed and a disconnect packet will be sent before if the given exception is anSshException
.- Specified by:
exceptionCaught
in interfaceSession
- Parameters:
t
- the exception to process
-
signalExceptionCaught
-
signalExceptionCaught
-
signalSessionClosed
protected void signalSessionClosed() -
signalSessionClosed
-
getConnectionService
-
getForwarder
-
getLocalForwardsBindings
- Specified by:
getLocalForwardsBindings
in interfacePortForwardingInformationProvider
- Returns:
- A snapshot of the currently bound forwarded local ports as "pairs" of local/remote
SshdSocketAddress
-es
-
isLocalPortForwardingStartedForPort
public boolean isLocalPortForwardingStartedForPort(int port) Description copied from interface:PortForwardingInformationProvider
Test if local port forwarding is started- Specified by:
isLocalPortForwardingStartedForPort
in interfacePortForwardingInformationProvider
- Parameters:
port
- The local port- Returns:
true
if local port forwarding is started- See Also:
-
getStartedLocalPortForwards
- Specified by:
getStartedLocalPortForwards
in interfacePortForwardingInformationProvider
- Returns:
- A
List
snapshot of the currently started local port forward bindings
-
getBoundLocalPortForwards
- Specified by:
getBoundLocalPortForwards
in interfacePortForwardingInformationProvider
- Parameters:
port
- The port number- Returns:
- The local bound
SshdSocketAddress
-es for the port - See Also:
-
getRemoteForwardsBindings
- Specified by:
getRemoteForwardsBindings
in interfacePortForwardingInformationProvider
- Returns:
- A snapshot of the currently bound forwarded remote ports as "pairs" of port + bound
SshdSocketAddress
-
isRemotePortForwardingStartedForPort
public boolean isRemotePortForwardingStartedForPort(int port) Description copied from interface:PortForwardingInformationProvider
Test if remote port forwarding is started- Specified by:
isRemotePortForwardingStartedForPort
in interfacePortForwardingInformationProvider
- Parameters:
port
- The remote port- Returns:
true
if remote port forwarding is started- See Also:
-
getStartedRemotePortForwards
- Specified by:
getStartedRemotePortForwards
in interfacePortForwardingInformationProvider
- Returns:
- A
NavigableSet
snapshot of the currently started remote port forwards
-
getBoundRemotePortForward
- Specified by:
getBoundRemotePortForward
in interfacePortForwardingInformationProvider
- Parameters:
port
- The port number- Returns:
- The remote bound
SshdSocketAddress
for the port -null
if none bound - See Also:
-
getAuthTimeout
- Specified by:
getAuthTimeout
in interfaceSession
- Returns:
- Timeout value in milliseconds for authentication stage
-
getIdleTimeout
- Specified by:
getIdleTimeout
in interfaceSession
- Returns:
- Timeout value in milliseconds for communication
-
toString
-