I want to connect to a Google Colab computer via SSH because it has really shit text editing abilities, and it likes to hide the characters I type in the interactive shell.
This is code I have on a Python 3 Jypyter notebook with Google Colab:
!echo "PermitRootLogin yes" >> /etc/ssh/sshd_config #gimme that root access, cause default user is root in Google Colab
!cat /etc/ssh/sshd_config #check check that everything is A-OK
!mkdir /content/ssh #make an SSH folder
!chmod 700 /content/ssh #gimme permissions on that folder
!ssh-keygen -t rsa #make me a key
!curl ifconfig.me #find where i'm at
!restart ssh #restart ssh, IDK why I do this
!service ssh restart
the Output it generates:
# $OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key
# Ciphers and keying
#RekeyLimit default none
# Logging
#SyslogFacility AUTH
#LogLevel INFO
# Authentication:
#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
#PubkeyAuthentication yes
# Expect .ssh/authorized_keys2 to be disregarded by default in future.
#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
#AuthorizedPrincipalsFile none
#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody
# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no
# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes
#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
PrintMotd no
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none
# no default banner path
#Banner none
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
# override default of no subsystems
Subsystem sftp /usr/lib/openssh/sftp-server
# Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand cvs server
PermitRootLogin yes
PasswordAuthentication yes
PermitRootLogin yes
PasswordAuthentication yes
PermitRootLogin yes
PermitRootLogin yes
mkdir: cannot create directory ‘/content/ssh’: File exists
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): key
key already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase): SSHNOW
Enter same passphrase again: SSHNOW
Your identification has been saved in key.
Your public key has been saved in key.pub.
The key fingerprint is:
SHA256:k+whmXKgXftXPAr3/zZJlZX85fST0RQOvqJOjBKX5NE root@dc8ab463b697
The key's randomart image is:
+---[RSA 2048]----+
| ..o=|
| . . o+=|
| . .o E . +O|
| o oo=o. . .+=|
| . o.*+S ..+. o|
| oo+o=.+.. . |
| . .o+o . . .|
| . o. . o.|
| . .oo|
+----[SHA256]-----+
35.231.31.81
/bin/bash: restart: command not found
When I try to connect to this using PuTTY on Windows with [email protected] on port 22, I only get a network timeout.
related questions, with limited functionality: https://stackoverflow.com/questions/48709520/answer-yes-to-terminal-on-google-colaboratory #what is climt https://stackoverflow.com/questions/51882170/connect-to-google-collab-with-ssh-from-console-from-pc #script is useful, but does some extra stuff I don't want https://research.google.com/colaboratory/local-runtimes.html #can't use local runtimes, I'm develop on 5 different computers every da
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
in the script, you only need to run that once. You're repeatedly adding the same config line over and over again, which won't really hurt anything but... yeah. You shouldn't do that. Then you cat the config file, which is actually helpful here but in normal use the config won't change, so why cat the file every time you run the script? These lines:mkdir /content/ssh
,chmod 700 /content/ssh
, and!ssh-keygen -t rsa
curl ifconfig.me
, but this will get the external IP. Are you trying to connect over an external or local network? If you're connecting from the intranet you'll need port forwarding or some other solution to direct the session to the correct local IP.restart ssh
is not a valid command and does nothing.service ssh restart
restarts the ssh server, which is also not necessary once the config changes have been made.