SSH 无需密码登录服务器且保持连接不断开的方法

SSH 无需密码登录服务器

Mac 无密码 SSH 登录服务器,只需要简单三步,不再需要记住账号密码,快速进入服务器

第一步,生成密钥对

在当前用户下创建 .ssh 目录

mkdir ~/.ssh

使用命令 ssh-keygen 生成密钥对,会在 ~/.ssh 目录下生成公/私钥

id_rsa      //私钥
id_rsa.pub  //公钥

第二步,上传公钥

使用命令 ssh-copy-id user@hostname

如:ssh-copy-id  admin@192.168.1.55

输入密码,操作成功
查看服务器 ~/.ssh/authorized_keys,可以看到本地的公钥已经写入到 authorized_keys 文件中

运行命令 ssh user@hostname 就可以直接无密码 SSH 登录服务器

第三步,config 配置

在当前用户 .ssh 目录下创建 config 文件

touch  ~/.ssh/config

通过 vim 编辑 config,添加服务器配置信息

Host iChochy                        //服务器别名
    Hostname 192.168.1.55           //服务器地址
    User admin                      //服务器用户
    Identityfile ~/.ssh/id_rsa      //服务器公钥对应的本地私钥

直接运行命令 ssh iChochy 就可以直接无密码 SSH 登录服务器

SSH 保持连接不断开

经常连接 SSH 长时间不操作就断开,实在忍无可忍,每次都想解决这个问题,但是就是懒得搞,这次必须得一刀解决。

解决方法一:服务器配置

  1. 连接 SSH
ssh root@192.168.0.1
  1. 编辑 sshd_config
vim /etc/ssh/sshd_config
  1. 找到 ClientAliveInterval,将前面的#去掉,
# 服务器每隔60秒会给客户端发送一次保活信息包给客户端,可以将这个值设置大一点
ClientAliveInterval 120
  1. 找到 ClientAliveCountMax,将前面的#去掉,
# 服务器发出的请求如果客户端没有响应,则判断超时1次,这个参数是表示允许超时的次数。可以将这个值设置大一点。
ClientAliveCountMax 720
  1. 执行
systemctl restart sshd

这样的话就算不操作也不会断开了,根据自己的需要将值调整即可。

解决办法二:客户端配置

  1. 通过修改客户端设置,以保证连接所有服务器都使用此设置
vim ~/.ssh/config
  1. 添加下面 3 个,如果有就修改,否则新增,意思跟服务器配置的差不多,不再阐述。
Host *
    TCPKeepAlive yes
    # Client每隔 60 秒发送一次请求给 Server,然后 Server响应,从而保持连接
    ServerAliveInterval 60
    # Client发出请求后,服务器端没有响应得次数达到3,就自动断开连接,正常情况下,Server 不会不响应
    ServerAliveCountMax 3

有的文章说只要配置 ServerAliveInterval 这一个参数就可以了, 读者可以自行验证, ServerAliveInterval 我觉得 60 秒就好了,而且基本去连的机器都保持,所以配置了 *,如果有需要针对某个机器,可以自行配置为需要的 serverHostName

解决办法三:连接 SSH 指定参数

连接时 ServerAliveInterval 的值设置大一点,这样就不会出现超时的现象了。

ssh root@192.168.0.1 -o ServerAliveInterval=99999

总结

我更偏向于解决办法二,因为只要把客户端配置好不管连接哪台服务器都不用担忧。服务器的话就要每台都得配置。看大家的喜好和场景吧。

  • SSH
    38 引用 • 41 回帖

赞助商 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...