That should be possible and requires a reverse port forward, which can be setup with adb:
Run this command on your Raspberry Pi: adb reverse tcp:<remote> tcp:<local>
where <remote>
is the TCP port on your android phone and <local>
the TCP port on your Raspberry Pi.
Example:
adb reverse tcp:2222 tcp:22
Let's say your Android phone has the WiFi IP 192.168.1.5. Now you should be able to connect from your laptop (or any device on the WiFi) to 192.168.1.5:2222 and end up port-forwarded to your Raspberry Pi's ssh on port 22.
You might need to build adb for Raspbian yourself, which is explained here. But recent Raspbian versions should include a recend adb client.
2nd option:
you could forward (relay) the ports at the USB tethering subnet - usually 192.168.42.x, where 192.168.42.129 is your Android phone and the Raspberry Pi will have an interface usb0
with the IP address assigned by the Android's DHCP. Understand that once USB tethering is enabled, your phone will have two active network interfaces: wlan0
(which is your WiFi 192.168.1.x as usual) and usb0
(which is 192.168.42.x). You need to know the usb0 IP on your Raspberry Pi, once it's connected to USB tethering. Now to make it all work you would need to use a tool like tcpxd on your Android phone:
tcpxd 192.168.1.5:2222 192.168.42.55:22
Where 192.168.42.55 is your usb0
IP from your Raspberry Pi. Same as option 1: You should be able to connect from your laptop (or any device on the WiFi) to 192.168.1.5:2222 and end up port-forwarded (relayed) to your Raspberry Pi's ssh on port 22.
Both solutions should work without root.