同步环境:
腾讯云轻量型服务器:Ubuntu20.04
前因,我不想在自己的小本本上安装各种环境,因为ssd比较小,而经常登录服务器操作ssh登录的时候每次输入ip和密码时间久了感觉麻烦的很,并且ssh稍微一段时间不操作就自动断开了,而我的各种开发环境基本都是容器化的,所以时间久了就会感觉各种不舒服,所以稍微折腾一下ssh免密登录还是很有必要的,
如果是一个全新的环境无脑执行下面的环境,确保已安装openssh-server并启动它
1. 在终端命令行输入命令: ssh-keygen -t rsa 无脑回车三下,会在HOME目录下生成一个.ssh的隐藏文件夹。
2. 进入 .ssh 文件夹 如果没有ssh过的话, 输入ls -l 可以看到 id_rsa 和 id_rsa.pub 两个文件
3. 创建config文件,输入: touch config
4. 配置公钥免登陆 , 先通过密码的方式登录到你的服务器主机上。然后将你本机文件 ~/.ssh/id_rsa.pub 里面的内容复制粘贴到目标服务器主机的 ~/.ssh/authorized_keys 文件内,要求换行粘贴,要不和其他的连在一起就不起效果了 , 如果没有 authorized_keys就各种方式创建。这时候就可以退出ssh 登录了,但是第一次登录的时候还是需要输入密码的
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 这是服务端没有authorized_keys文件的时候直接复制过去,如果已经存在,还有多个人使用那就把文件的内容复制粘贴到服务端文件的后面
scp ~/.ssh/authorized_keys user@nodeIP:~/.ssh/
# 好像如果是777 权限的时候连接报错,有些有这样的,有些没有
chmod 600 ~/.ssh/authorized_keys
在服务端,如果是root登录,还需要配置服务端的:/etc/ssh/sshd_config
# 根据自生选编辑器
vi /etc/ssh/sshd_config
# 注释掉下面的这句,这里默认的是禁止密码登录
PermitRootLogin prohibit-password
# 下面是允许root登录
PermitRootLogin yes
# 重启生效刚才的配置,这样root用户也可以登录了
service sshd restart
config配置文件的使用,其实ssh的方式多种多样
- ssh登录,这种原始的方式很麻烦
ssh username@IP
- 使用别名的方式:alias
打开shell的配置文件
sudo vi ~/.zshrc
alias node1="ssh node1@IP"
alias node2="ssh node2@IP"
source ~/.zshrc
~ node1
- 配置文件的方式,这样可以设置和服务器心跳的间隔 ServerAliveInterval:客户端在向服务器发送空数据包之前(等待连接保持活动状态)将等待的秒数。
ClientAliveInterval:服务器在向客户端发送空数据包之前(等待连接保持活动状态)将等待的秒数。
将值设置为0(默认值)将禁用这些功能,因此如果空闲时间太长,连接可能会断开。
ServerAliveInterval似乎是使连接保持活动状态的最常见策略。为防止管道破裂问题,这是我在.ssh / config文件中使用的ssh配置:
Host myhostshortcut
HostName myhost.com
User barthelemy
# 个人只配置了ServerAliveInterval 这个参数
ServerAliveInterval 60
ServerAliveCountMax 10
以上设置将以以下方式工作,
- 客户端将等待空闲60秒钟(ServerAliveInterval时间),然后向服务器发送“ no-op null数据包”,并期望响应。如果没有响应,则它将继续尝试上述过程直到10(ServerAliveCountMax)次(600秒)。如果服务器仍然没有响应,则客户端将断开ssh连接。
服务器端的ClientAliveCountMax也可能会有所帮助。这是允许客户端在断开连接之前保持无响应时间的限制。默认值为3,如在三个ClientAliveInterval中一样。