连接Linux的服务器时使用SSH密钥认证及解决自动断连问题
linux  /  管理员 发布于 7年前   174
A机器(ssh连接发起端,即客户端):
添加一个测试用户aaa
复制代码代码如下:
[root@A ~]# useradd aaa
su成aaa
复制代码代码如下:
[root@A ~]# su - aaa
[aaa@A ~]$
ssh-keygen创建rsa密钥对
复制代码代码如下:
[aaa@A ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/aaa/.ssh/id_rsa): 密钥文件的保存位置
Created directory '/home/aaa/.ssh'. 默认的密钥文件存放目录
Enter passphrase (empty for no passphrase): 密钥文件的保护密码
Enter same passphrase again:
Your identification has been saved in /home/aaa/.ssh/id_rsa. 生成的私钥
Your public key has been saved in /home/aaa/.ssh/id_rsa.pub. 生成的公钥
The key fingerprint is:
81:d7:de:e7:cb:7c:4e:16:d6:76:da:9d:30:25:76:09 [email protected]
复制代码代码如下:
[aaa@A ~]$ ll
total 32K
drwx------ 3 aaa aaa 4.0K Sep 17 16:09 .
drwxr-xr-x 4 root root 4.0K Sep 17 16:09 ..
-rw-r--r-- 1 aaa aaa 304 Sep 17 16:09 .bash_logout
-rw-r--r-- 1 aaa aaa 191 Sep 17 16:09 .bash_profile
-rw-r--r-- 1 aaa aaa 124 Sep 17 16:09 .bashrc
-rw-r--r-- 1 aaa aaa 383 Sep 17 16:09 .emacs
drwx------ 2 aaa aaa 4.0K Sep 17 16:09 .ssh 创建出的.ssh目录默认权限为700
注意生成的私钥文件的默认权限是rw-------,即600(确保他人不能查看)
复制代码代码如下:
[aaa@A ~]$ ll .ssh/
total 16K
drwx------ 2 aaa aaa 4.0K Sep 17 16:09 .
drwx------ 3 aaa aaa 4.0K Sep 17 16:09 ..
-rw------- 1 aaa aaa 951 Sep 17 16:09 id_rsa 私钥文件
-rw-r--r-- 1 aaa aaa 231 Sep 17 16:09 id_rsa.pub 公钥文件
B机器(ssh的被连接端,即服务端):
添加bbb用户
复制代码代码如下:
[root@B ~]# useradd bbb
su成bbb
复制代码代码如下:
[root@B ~]# su - bbb
手工在家目录下建立.ssh目录(如果不使用ssh-keygen工具的话)
复制代码代码如下:
[bbb@B ~]$ mkdir .ssh
[bbb@B ~]$ ls -al
total 28
drwx------ 3 bbb bbb 4096 Sep 17 16:52 .
drwxr-xr-x 4 root root 4096 Sep 17 16:52 ..
-rw-r--r-- 1 bbb bbb 304 Sep 17 16:52 .bash_logout
-rw-r--r-- 1 bbb bbb 191 Sep 17 16:52 .bash_profile
-rw-r--r-- 1 bbb bbb 124 Sep 17 16:52 .bashrc
drwxrwxr-x 2 bbb bbb 4096 Sep 17 16:52 .ssh
修改.ssh目录的权限为700(非常重要!)
复制代码代码如下:
[bbb@B ~]$ chmod 700 .ssh
[bbb@B ~]$ ls -al
total 28
drwx------ 3 bbb bbb 4096 Sep 17 16:52 .
drwxr-xr-x 4 root root 4096 Sep 17 16:52 ..
-rw-r--r-- 1 bbb bbb 304 Sep 17 16:52 .bash_logout
-rw-r--r-- 1 bbb bbb 191 Sep 17 16:52 .bash_profile
-rw-r--r-- 1 bbb bbb 124 Sep 17 16:52 .bashrc
drwx------ 2 bbb bbb 4096 Sep 17 16:52 .ssh 确认权限为700
在.ssh目录里创建authorized_keys文件,并将A机器上aaa用户的公钥(id_rsa.pub)内容写入此文件(关键操作!)
复制代码代码如下:
[bbb@B ~]$ cd .ssh/
[bbb@B .ssh]$ vi authorized_keys
粘贴aaa的id_rsa.pub内容进来
修改authorized_keys的权限为400(非常重要!)
复制代码代码如下:
[bbb@B .ssh]$ chmod 400 authorized_keys
[bbb@B .ssh]$ ls -l authorized_keys
-r-------- 1 bbb bbb 231 Sep 17 16:53 authorized_keys 确认权限为400
配置结束。
测试:从A机器上,在aaa用户下,使用bbb帐号登录B机器。
复制代码代码如下:
[aaa@A ~]$ ssh -l bbb xxx.xxx.xxx.xxx
Enter passphrase for key '/home/aaa/.ssh/id_rsa': 会提示输入私钥保护密码(在创建密钥对时输的密码,输入正确后进入系统)
[bbb@B ~]$
安全的关键点在于如何安全地将id_rsa.pub的内容传递到服务端
测试完毕,清理系统(删除测试用户帐号及其家目录)
A机器上,exit到root下
复制代码代码如下:
[root@A ~]# userdel -r aaa
B机器上,exit到root下
复制代码代码如下:
[root@B ~]# userdel -r bbb
PS:SSH连接自动断开问题的解决
用putty/SecureCRT连续3分钟左右没有输入, 就自动断开, 然后必须重新登陆, 很麻烦.
在网上查了很多资料, 发现原因有多种, 环境变量TMOUT引起,ClientAliveCountMax和ClientAliveInterval设置问题或者甚至是防火墙的设置问题. 所以可以这么尝试:
1, echo $TMOUT
如果显示空白,表示没有设置, 等于使用默认值0, 一般情况下应该是不超时. 如果大于0, 可以在如/etc/profile之类文件中设置它为0.
Definition: TMOUT: If set to a value greater than zero, the value is interpreted as the number of seconds to wait for input after issuing the primary prompt. Bash terminates after waiting for that number of seconds if input does not arrive.
2. ClientAliveInterval 60
在/etc/ssh/sshd_config中增加ClientAliveInterval 60, ClientAliveInterval指定了服务器端向客户端请求消息的时间间隔, 默认是0, 不发送.而ClientAliveInterval 60表示每分钟发送一次, 然后客户端响应, 这样就保持长连接了.这里比较怪的地方是:不是客户端主动发起保持连接的请求(如FTerm, CTerm等),而是需要服务器先主动.
另外,至于ClientAliveCountMax, 使用默认值3即可.ClientAliveCountMax表示服务器发出请求后客户端没有响应的次数达到一定值, 就自动断开. 正常情况下, 客户端不会不响应.
3. 启用putty keepalive
复制代码代码如下:
putty -> Connection -> Seconds between keepalives ( 0 to turn off ), 默认为0, 改为60.
4.SecureCRT设置反空闲
复制代码代码如下:
option->session option->Terminal->Anti-idle->Send protocol NO-OP every__seconds
每隔几秒发送空字符串 保持链接不断开
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号