Question 1:
The ssh-copy-id command is not supported. This is actually a standard command for ssh.
clientInput:
ssh-copy-id -p 123 -i /root/.ssh/id_rsa.pub user@ip
and received the following command
exec sh -c'cd; umask 077; mkdir -p \".ssh\" && {[-z tail -1c .ssh/authorized_keys 2>/dev/null] || echo >> \".ssh/authorized_keys\" || exit 1;} && cat >> \".ssh/authorized_keys\" || exit 1; if type restorecon >/dev/null 2>&1; then restorecon -F \".ssh\" \".ssh/authorized_keys\"; fi'
The exec cannot be identified. As a result, the execution fails.
I solved this by customizing exec judgment.
public Command createCommand(ChannelSession channel, String command) throws IOException {
LOGGER.error("create Command: " + command);
if (command !=null && command.startsWith("exec ")) {
command = command.substring(5);
}
return new ShellWrapperCommand(command);
}
Question 2: Multiple commands such as " ls -l; rm -rf /tmp/test" cannot be executed correctly.
The input is as follows:
ssh user@IP -p 123 "echo test2; echo 22"
The actual output is
test2; echo 22
I understand that the preceding two questions are very common scenarios. Is SSHD not supported by default?
Question 1:
The ssh-copy-id command is not supported. This is actually a standard command for ssh.
clientInput:
ssh-copy-id -p 123 -i /root/.ssh/id_rsa.pub user@ipand received the following command
exec sh -c'cd; umask 077; mkdir -p \".ssh\" && {[-ztail -1c .ssh/authorized_keys 2>/dev/null] || echo >> \".ssh/authorized_keys\" || exit 1;} && cat >> \".ssh/authorized_keys\" || exit 1; if type restorecon >/dev/null 2>&1; then restorecon -F \".ssh\" \".ssh/authorized_keys\"; fi'The exec cannot be identified. As a result, the execution fails.
I solved this by customizing exec judgment.
Question 2: Multiple commands such as " ls -l; rm -rf /tmp/test" cannot be executed correctly.
The input is as follows:
ssh user@IP -p 123 "echo test2; echo 22"The actual output is
test2; echo 22I understand that the preceding two questions are very common scenarios. Is SSHD not supported by default?