免密登录服务器,保持长连接

环境:Ubuntu20.04

背景

每次登录服务器都需要输入密码,而且在本地终端中过了大概七八分钟,ssh连接就会断掉

免密登录

这里的密钥公钥生成默认你已经弄过,没有弄的自行谷歌一下。
在本地终端中输入以下命令,修改细节可以参考下面的解释:

ssh-copy-id -i ~/.ssh/id_rsa.pub root@ip

这将 ~/.ssh/id_rsa.pub 文件中的公钥复制到远程主机的授权文件中。

  1. ssh-copy-id :这是一个用于复制公钥到远程主机的命令。它会将本地主机上的公钥添加到远程主机上的授权文件中,以实现免密码 SSH 登录。
  2. -i:这是 ssh-copy-id 命令的一个选项。后面跟着要复制的公钥文件的路径。使用 -i 选项可以指定要复制的公钥文件,而不是默认的 ~/.ssh/id_rsa.pub 文件。
  3. 一般使用 ssh-copy-id -i 命令的步骤如下:
    1. 生成 SSH 密钥对:如果你还没有生成 SSH 密钥对,可以使用 ssh-keygen 命令生成。这将生成一对密钥,包括公钥和私钥。
    2. 准备远程主机:确保你有 SSH 登录到远程主机的访问权限。
    3. 输入远程主机的密码:命令会要求你输入远程主机的密码,以确认你有权限将公钥复制到远程主机
    4. 完成:一旦命令成功执行并复制了公钥,你将能够使用私钥进行无密码 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的服务。

  1. 编辑/etc/ssh/sshd_config,追加以下内容:
# Server每隔 180 秒发送一次心跳数据包给Client,然后Client响应从而保持连接
ClientAliveInterval 180
# Server发出请求后,客户端未响应次数达到10,就自动断开连接。正常情况下,Client基本会响应
ClientAliveCountMax 10

  1. 重启ssh服务以使配置生效
    systemctl restart sshd

长连接参考

posted @ 2023-06-07 23:20  CodeWater  阅读(67)  评论(0)    收藏  举报