服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - 连接Linux的服务器时使用SSH密钥认证及解决自动断连问题

连接Linux的服务器时使用SSH密钥认证及解决自动断连问题

2019-07-03 15:39风再起时 Linux

这篇文章主要介绍了连接Linux的服务器时使用SSH密钥认证及解决自动断连问题的方法,主要适用于利用putty等客户端连接服务器的情况,需要的朋友可以参考下

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 aaa@A.test.com
 
复制代码
代码如下:

[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

每隔几秒发送空字符串 保持链接不断开

延伸 · 阅读

精彩推荐
  • Linux确保Linux系统安全的前提条件 漏洞防护

    确保Linux系统安全的前提条件 漏洞防护

    Linux 作为开放式的操作系统受到很多程序员的喜爱,很多高级程序员都喜欢编写Linux操作系统的相关软件。这使得Linux操作系统有着丰富的软件支持,还有无...

    Linux之家2642020-04-11
  • Linux详解Linux系统下PXE服务器的部署过程

    详解Linux系统下PXE服务器的部署过程

    这篇文章主要介绍了Linux系统下PXE服务器的部署过程,包括对PXE的API架构作了一个基本的简介,需要的朋友可以参考下...

    运维之道9812019-07-04
  • Linuxlinux中rmdir命令使用详解(删除空目录)

    linux中rmdir命令使用详解(删除空目录)

    今天学习一下linux中命令: rmdir命令。rmdir是常用的命令,该命令的功能是删除空目录,一个目录被删除之前必须是空的 ...

    linux命令大全5372019-11-19
  • LinuxLinux常用的日志文件和常用命令

    Linux常用的日志文件和常用命令

    成功地管理任何系统的关键之一,是要知道系统中正在发生什么事。 Linux 中提供了异常日志,并且日志的细节是可配置的。Linux 日志都以明文形式存储,所...

    Linux教程网2632020-04-18
  • Linux手把手教您在 Linux 上使用 GPG 加解密文件

    手把手教您在 Linux 上使用 GPG 加解密文件

    在本教程中,我将告诉你如何用 GPG 加密和解密文件。这是一个简单的教程,你可以在你的 Linux 系统上尝试所有的练习。这将帮助你练习 GPG 命令,并在你...

    Linux中国6962021-12-15
  • LinuxLinux上设置用户通过SFTP访问目录的权限的方法

    Linux上设置用户通过SFTP访问目录的权限的方法

    这篇文章主要介绍了Linux上设置用户通过SFTP访问目录的权限的方法,SFTP可以理解为使用SSH协议进行FTP传输的协议,因而同时要对OpenSSH进行相关设置,需要的朋...

    OSChina10022019-06-19
  • LinuxLinux lnmp下无法使用mail发邮件的两种解决方法

    Linux lnmp下无法使用mail发邮件的两种解决方法

    在配置了lnmp环境后,出现了mail函数不能发送邮件的问题,其实有两种方法,一是使用sendmail组件,而是使用postfix。下面为大家一一介绍下 ...

    Linux之家4042019-09-17
  • LinuxLinux中环境变量配置的步骤详解

    Linux中环境变量配置的步骤详解

    Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的...

    Myths7882022-02-10