现在假设远程服务器的ip地址是
139.196.55.123
端口假设就是默认的22
登录名为 my_name
我们首先来实现如何免密登录
- cd .ssh/
- ls
看看有没有id_rsa_pub,没有的话生成密钥:
ssh-keygen -t rsa -C "your_email@xx.com"
回车即可
如果有的话就不用执行上一步。
- scp -P 22 ~/.ssh/id_rsa.pub my_name@139.196.55.123:~/
上面的命令是将本地的公钥传送到服务器端的主目录下,也可以用xftp或者filezilla等文件传输软件传输id_rsa.pub
- ssh -p 22 my_name@139.196.55.123
登录到服务器端
在主目录下看看有没有.ssh文件夹,有的话就不用创建,没有就:
mkdir ~/.ssh
- cd ~/.ssh
- cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
上面的命令是将从本地传到主目录下的公钥复制到authorized_keys中
可以利用 cat ~/.ssh/authorized_keys查看下是否有公钥
好的,服务器端已经部署成功,我们回到本地
- cd ~/.ssh/
- sudo vim config
我们添加如下几行:
其中的server是用来标识服务器的主机名,不是你的用户名,你可以随便取一个名字。
退出vim之后就可以直接连接:
ssh server
这样再用ssh登录服务器就不用输入服务器的ip地址,用户名以及密码了
接下来的问题是如果长时间不执行操作,那么我们本地的终端就会与服务器断开ssh连接。
解决办法有两个:
对于本地客户端来说,我们要求每隔一定时间就像服务器发送一个空数据包保持TCP连接。
具体的就是:
仍然在~/.ssh/config中配置
只需要在上幅图那几行的命令下再加上:
TCPKeepAlive=yes
ServerAliveInterval 60
意思就是每隔60s就像服务器发送个数据包。
第二种方法是在服务器端:
sudo vim /etc/ssh/sshd_config
添加如下内容:
我们可以算一算,(120*7200)/(24*3600)==10(天)
也就是10天内都不会断开连接
最后记得重启ssh服务:
systemctl restart sshd