环境:Ubuntu20.04
背景
每次登录服务器都需要输入密码,而且在本地终端中过了大概七八分钟,ssh连接就会断掉
免密登录
这里的密钥公钥生成默认你已经弄过,没有弄的自行谷歌一下。
在本地终端中输入以下命令,修改细节可以参考下面的解释:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@ip
这将 ~/.ssh/id_rsa.pub 文件中的公钥复制到远程主机的授权文件中。
ssh-copy-id
:这是一个用于复制公钥到远程主机的命令。它会将本地主机上的公钥添加到远程主机上的授权文件中,以实现免密码 SSH 登录。-i
:这是 ssh-copy-id 命令的一个选项。后面跟着要复制的公钥文件的路径。使用 -i 选项可以指定要复制的公钥文件,而不是默认的 ~/.ssh/id_rsa.pub 文件。- 一般使用 ssh-copy-id -i 命令的步骤如下:
- 生成 SSH 密钥对:如果你还没有生成 SSH 密钥对,可以使用 ssh-keygen 命令生成。这将生成一对密钥,包括公钥和私钥。
- 准备远程主机:确保你有 SSH 登录到远程主机的访问权限。
- 输入远程主机的密码:命令会要求你输入远程主机的密码,以确认你有权限将公钥复制到远程主机
- 完成:一旦命令成功执行并复制了公钥,你将能够使用私钥进行无密码 SSH 登录到远程主机。
请注意,ssh-copy-id 命令需要在本地主机和远程主机之间建立 SSH 连接,并具有足够的权限将公钥添加到远程主机上的授权文件。
长连接
有几种方法,笔者使用的第一种,具体看个人。
本地
编辑自己终端中的config
文件,一般是/etc/ssh/ssh_config或者~/.ssh/config,在需要连接的服务部分追加以下配置:
TCPKeepAlive=yes
# Client每隔 180 秒发送一次KeepAlive请求给Server,然后Server响应从而保持连接
ServerAliveInterval 180
# Client发出请求后,服务器端未响应次数达到3,就自动断开连接。正常情况下,Server基本会响应。
ServerAliveCountMax 3
服务器
服务器也是类似,只不过需要重启下ssh的服务。
- 编辑/etc/ssh/sshd_config,追加以下内容:
# Server每隔 180 秒发送一次心跳数据包给Client,然后Client响应从而保持连接
ClientAliveInterval 180
# Server发出请求后,客户端未响应次数达到10,就自动断开连接。正常情况下,Client基本会响应
ClientAliveCountMax 10
- 重启ssh服务以使配置生效
systemctl restart sshd