一般情况下通过ssh连接Vlab,每次都需要打开终端输入一长串包含自己zID的命令:
ssh zID@cse.unsw.edu.au
再根据提示再输入zID密码才行。
下面介绍一种可以让你在本地ssh直连vlab”跳过“输入账号密码的简单方法:
我们首先来实现免密登录:
- 本地打开Terminal使用下面命令生成一对秘钥:id_rsa与id_rsa.pub(若之前生成过则无需overwrite覆盖)
ssh-keygen -t rsa
- 通过以下命令将本地 ~/.ssh/路径下的id_rsa.pub文件上传至Vlab服务器的~/Documents位置(将命令中zID替换成你自己的8位zID)
scp ~/.ssh/id_rsa.pub zID@cse.unsw.edu.au:~/Documents/
- 登录到Vlab,使用以下命令创建.ssh目录并且生成一对秘钥(如果有,可以忽略这步)
cd ~/.ssh/ ssh-keygen -t rsa
- 使用以下命令将服务器中~/Documents目录下的id_rsa.pub写入至~/.ssh/authorized_keys
cat ~/Documents/id_rsa.pub > ~/.ssh/authorized_keys
至此,已经实现免密登录Vlab,我们可以在本地终端输入以下命令测试一下是否成功(将zID替换成自己的学号)
ssh zID@cse.unsw.edu.au
或
ssh zID@grieg.cse.unsw.edu.au
下面再来简化登录口令:
- 本地打开Terminal,如果你是bash终端,输入以下命令进入VIM编辑器来编辑.bash_profile文件:
如果你的终端不是bash而是zsh,请执行:vim ~/.bash_profile
vim ~/.zshrc
-
将光标移至文件的末尾,按i键开启插入模式,另起一行插入以下内容(将zID替换成你自己的学号),完成后按ESC键,输入:wq保存并退出。这步是在设置我们的简化版登录口令(你可以自定义等号前的简化版口令)
alias cse='ssh zID@cse.unsw.edu.au' alias grieg='ssh zID@grieg.cse.unsw.edu.au'
- 在终端中输入以下口令使配置立即生效(for bash)
如果你是zsh终端,请输入:source ~/.bash_profile
source ~/.zshrc
简化登录口令完成!
现在如果想ssh远程连接至你专属的zID@cse.unsw.edu.au服务器,只需要在本地终端中输入cse然后按下回车即可(或输入grieg 以连接至zID@grieg.cse.unsw.edu.au)
你可能会遇到的问题:
Q1:终端命令行前面都出现了惹眼的(base)
这也可能是因为auto_activate_base
设置为True。您可以使用以下命令进行检查
conda config --show | grep auto_activate_base
若为True,你可以通过以下命令将其设置为假:
conda config --set auto_activate_base False
之后关闭并重启终端,每个命令行前面惹眼的(base)就消失了。
Q2:id_rsa.pub: No such file or directory
在实现免密登录的过程中,Ubuntu系统下生成的秘钥文件名为password与password.pub(而非id_rsa与id_rsa.pub),具体可以用执行完步骤1后用ls指令看一下,之后在第2步与第5步中将id_rsa.pub替换成password.pub(或者你系统生成的公钥文件名)即可。
Q3:连接被拒
`netstat -nalt |wc -l`
409
连接数409
如果ssh配置文件未进行修改的话,会导致连接数上限,影响sftp连接。
查看ssh配置文件,是否对连接数进行了限制
`cat /etc/ssh/sshd_config | grep MaxStart`
#MaxStartups 10:30:100
默认配置是10:30:100表示超过第10个链接之后的连接有30%概率连接失败,且增长到100个链接后拒绝新的连接。
这里直接修改成MaxStartups 10000保存后解决