Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save evandrocoan/f503188587587d7b1d1ba8746c9c6107 to your computer and use it in GitHub Desktop.
Save evandrocoan/f503188587587d7b1d1ba8746c9c6107 to your computer and use it in GitHub Desktop.
# Connectiong by SSH from Android Termux to Desktop and vice-versa.md
# Copyright (c) 2019 Evandro Coan
# 
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

These are Android commands to run on Termux and setup a SSH client and server, allowing to connect from your desktop to your Android and vice-versa. Does not cover the SSH server and client set up on your desktop computer.

Using the SSH server https://termux.com/ssh.html

apt update
apt upgrade
apt install openssh

Here you can create a password for your keys and use it to connect to your computer, if you like a password. Otherwise, leave them in blank and no passwords are required, other than your DESKTOP user computer password.

How can I set up password-less SSH login? https://askubuntu.com/questions/46930/how-can-i-set-up-password-less-ssh-login

ssh-keygen -b 4096 -t rsa

This allows you to connect from your ANDROID to your DESKTOP by SSH connection without your ANDROID user password (as passwords are not supported by termux sshd server)

3 Steps to Perform SSH Login Without Password Using ssh-keygen & ssh-copy-id https://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

This allows you to connect from your DESKTOP to your ANDROID by SSH connection without your ANDROID user password (if you want to use your's computer user password, skip this command)

  1. First Option Accessing termux user environment from other consoles https://android.stackexchange.com/questions/154756/accessing-termux-user-environment-from-other-consoles

     scp [email protected]:~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
    
  2. Second Option How do I add SSH Keys to authorized_keys file? https://askubuntu.com/questions/46424/how-do-i-add-ssh-keys-to-authorized-keys-file

     cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
    

Scripts and notes for setting up and using SSHd on your Android device using Termux https://github.com/tomhiggins/TermuxSSHDsetup

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ssh blank passphrase but still asking for it https://serverfault.com/questions/845623/ssh-blank-passphrase-but-still-asking-for-it

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa.pub
chmod 600 ~/.ssh/known_hosts
chmod 600 ~/.ssh/authorized_keys

Start the server by executing sshd (which will start it on the default port 8022) and run logcat -s 'syslog:*' to view the log output from the server process. Execute pkill sshd to stop the server.

logcat -s 'syslog:*'
pkill sshd
sshd

Finally, connecting from one to another and vice-versa:

Connecting from your ANDROID to your DESKTOP (the usage of your DESKTOP user password can be optional)

ssh [email protected]

Connecting from your DESKTOP to your ANDROID (must not to use your ANDROID user password)

Since Termux is a single-user system you may connect as any user - regardless of your specified username you will login as the only Termux user available.

The Termux sshd binary does not support password logins, so a key needs to be authorized in ~/.ssh/authorized_keys before connecting. Use ssh-keygen to generate a new one if desired.

ssh -p 8022 -i ~/.ssh/id_rsa IP.OF.YOUR.ANDROID

(ANDROID) If you still have trouble logging on navigate to file and activate these two key pairs: /data/data/com.termux/files/usr/etc/ssh/sshd_config

ChallengeResponseAuthentication no
PubkeyAuthentication yes

Extra: Locking and unlocking the file system from read-only to read-write and vice-versa.

How to copy files to an Android emulator’s data directory with ‘adb push’ https://alvinalexander.com/android/how-copy-files-android-device-emulator-adb-push-read-only-error

mount -o rw,remount rootfs /

Revert the changes back after finishing the changes!

cat /proc/mounts
mount -o ro,remount rootfs /
@bthornemail
Copy link

How about adding a reverse tunnel into your andriod incase you dont have the pun=blic ip address

ssh -R 8022:localhost:8022 [email protected];
this attatch a port on a remote host(-R) 8022(first port number) to the ssh server you are(localhost:8022) on current computer your typing on. It attaches the port to the server([email protected])

@prasanta1987
Copy link

There is a easy tutorial for this.
https://youtu.be/TNZW0LvEUKM

@maxgutierrez
Copy link

Existe um tutorial fácil para isso.
https://youtu.be/TNZW0LvEUKM

Muito... Muito OBRIGADO

@Masterbob79
Copy link

Any tips on ssh remotely using termux?

@midhunvnadh
Copy link

midhunvnadh commented Oct 21, 2021

### I have found this one online.
This video helped a lot. Detailed Explanation.
https://youtu.be/52Tf0r_jqXE

@Masterbob79
Copy link

I have found this one online. This guy helped a lot. https://youtu.be/52Tf0r_jqXE

Thank you. I will check it out

@progonkpa
Copy link

With ed25519 didn't work for me, would still ask password.
ssh-keygen -a 256 -t ed25519 -C "$(whoami)@$(hostname)"
RSA 4096 did work.

@kishan62435
Copy link

Do we need to make any changes in ssh config file to ssh into termux over inernet??

@progonkpa
Copy link

Do we need to make any changes in ssh config file to ssh into termux over inernet??

I only use it locally.

.../usr/etc/sshd_conf
UseDNS no
  • Is your router configured to portforward SSH?
  • Do you have firewall or antivirus that blocks SSH?
  • Did you start sshd on Termux with command sshd?

@evandrocoan
Copy link
Author

evandrocoan commented Jan 15, 2024

Edit: Slight oversimplification, but it does allow passwords.

Perhaps edit /usr/etc/sshd_config and restart sshd daemon

PermitRootLogin yes
# AllowUsers      user1 user2
PasswordAuthentication yes

https://unix.stackexchange.com/questions/727492/passwordauthentication-no-but-i-can-still-login-by-password

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment