SSH+RSA实现远程免密登陆

知识部分
简述:
SSH是一种安全通道协议,主要用来实现字符界面的远程登陆、远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登陆是输入的用户口令。SSH和TELNET、RSH等提供了更好的安全性。OpenSSH是实现SSH远程登陆的开源软件项目,适用于Linux、UNIX系统,其官网地址为http://www.openssh.com。
RSA加密算法是一种非对称加密算法。对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。假如有人找到一种快速因数分解的算法的话,那么用RSA加密的信息的可靠性就肯定会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的RSA钥匙才可能被强力方式解破。到目前为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。
操作部分

一、修改配置文件
1、OpenSSH在Linux中默认已经安装,所以我们第一步就可以直接在需要开启SSH的linux系统上修改它的配置文件/etc/ssh/sshd_config。首先配置监听地址为192.168.1.1,端口默认22。

2、找到下面几行,将#去除,使其生效。该三行配置是支持基于RSA生成的密钥对认证方式。

3、在配置文件中添加该配置可以配置授权用户。下图所示,允许root从所有网段登陆;允许zhangsan在192.168.1.2上登陆。(这里允许root登陆是为了一会使用scp上传公钥。)

4、重启服务

5、建立用户张三、配置地址为192.168.1.1

二、构建RSA密钥对验证体系
1、在客户端上建立用户lisi作为zhangsan的映射用户,并用lisi登陆linux客户机。

2、用lisi登陆后创建密钥对。

3、密钥对生成后会放在以下路径,确认一下是否生成。其中id_rsa为私钥,id_rsa.pub为公钥。

4、上传公钥到SSH服务端。这里可以使用SSH提供的一个scp命令程序上传该公钥。注意:我们上传公钥通过root用户和密码验证来使用scp命令程序。

5、在服务端将公钥导入到zhangsan的公钥库。首先在zhangsan的根目录/home/zhangsan/下建立.ssh/目录;然后将上传到/tmp下的公钥倒过来。

6、配置地址为192.168.1.2
三、验证。返回到linux客户端中,在lisi中远程登陆SSH服务端。

可以看到,我们登录时并没有输入密码的环节。这种方法即使远程登陆的过程中被抓包,也无法破解密码。既保证了安全性,也有了一定的便捷性。
四、使用windows客户端实现上面的免密登陆。
1、首先为windows客户端配置地址为192.168.1.3

2、我们需要在windows上安全xshell终端模拟软件,以远程连接SSH服务端。

3、打开xshell,点击“工具”-“新建用户密钥生成向导”

4、选择生成RSA密钥,长度2048(自己决定,越长越安全)。

5、生成完成,点击下一步。

6、输入密钥名称及加密密码

7、双击该密钥对,然后将公钥保存起来


8、把公钥上传到SSH服务端的/root/.ssh下。我们通过安装winscp这个软件上传。

9、打开winscp,在该界面输入hostname也就是SSH服务端地址;输入用户名“root”及密码。注意:上传公钥这里仍然使用root用户

10、将刚刚保存到桌面的公钥文件传到SSH服务端中的/root下。直接拖动公钥文件到右边的SSH服务端即可。

11、进入到SSH服务端,找到/root下的id_rsa_2048.pub公钥文件。并将其导入到root的公钥文件中。

12、验证。打开windows客户端的xshell,新建会话

13、点击连接。

14、接受并保存

15、输入登陆用户root

16、这里选择第二个Public Key,输入密钥对的加密密码

17、成功连接

补充:搭配TCP Wrappers做SSH的访问控制。
TCP Wrappers可以将其他的TCP服务程序“包裹”起来,增加一个安全监测过程,外来的连接请求需要经过TCP Wrappers的检测,获得许可才可以访问到真正的服务程序。通常TCP Wrappers默认安装,我们直接配置即可。他的两个策略文件为/etc/hosts.allow、/etc/hosts.deny,分别用来设置允许、拒绝策略。
如图,编辑/etc/hosts.allow,格式为<服务程序>:<客户机地址>。(例如192.168.2.0网段用192.168.2.*表示;ALL表示所有网段。如果写多个网段、多个服务可以用“,”分隔。)图中表示允许192.168.1.2和192.168.2.0/24网段使用SSH远程。

原文地址:http://blog.51cto.com/13434336/2093469

时间: 2024-10-14 00:52:21

SSH+RSA实现远程免密登陆的相关文章

【转载】SSH login without password 免密登陆

Your aim You want to use Linux and OpenSSH to automate your tasks. Therefore you need an automatic login from host A / user a to Host B / user b. You don't want to enter any passwords, because you want to call ssh from a within a shell script. How to

linux上如何设置ssh免密登陆

一.linux上ssh链接 1.功能说明 scp就是security copy,用于将文件或者目录从一个Linux系统拷贝到另一个Linux系统下.scp传输数据用的是SSH协议,保证了数据传输的安全,其格式如下: scp 远程用户名@IP地址:文件的绝对路径 本地Linux系统路径 scp 本地Linux系统文件路径 远程用户名@IP地址:远程系统文件绝对路径名 scp使用第一种格式是将远程Linux系统上的某个文件或者目录拷贝到本地Linux系统上来,使用第二种是将本地的某个文件或者目录拷贝

SSH之免密登陆

又来了,上头让小轩我在服务器中写一个Shell脚本,主要用来在机器B中定时备份机器A中的一些文件.那么,小轩是怎么想的呢? 在小轩的知识库里,现在有scp和ssh两个玩具.别的还真没有其他什么东西了.那就想直接用scp去远程复制好了,但是scp复制的时候还要输入密码.那就搞搞让使用scp的时候不用输入密码好了. 以下进入正文 忽略ssh安装scp安装过程.默认认为当前机器与远程机器含有完整的ssh,scp功能 首先在机器B中使用ssh-keygen -t rsa 命令 (想来玩git的童鞋应该知

shell脚本配置ssh免密登陆

通过shell脚本配置免密登陆,分为两个脚本,一个是配置文件config.env,一个是正式脚本sshkey.sh. # config.envexport HOST_USER=(root) export PASSWD=(a) export SSH_HOST=(192.168.165.15 192.168.165.16 192.168.165.165) 以上congfig.env文件中,SSH_HOST参数可配置多个IP,可配置不同的用户 sshkey.sh脚本内容大致如下: 在本地用rsa加密方

【Linux】ssh-copy-id三步实现ssh免密登陆

一.本地机器上使用ssh-keygen产生公钥私钥对 ssh-keygen -t rsa -C "[email protected]" --->执行完会在~/.ssh/下生成公钥私钥对 查看公钥私钥对: wucaiyundeMacBook-Pro:~ wucaiyun$ cd ~/.ssh/ wucaiyundeMacBook-Pro:.ssh wucaiyun$ ll total 24 899401 0 drwx------ 5 wucaiyun staff 160 12 18

ssh免密登陆

ssh无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 系统:CentOS7主机:A(192.168.66.100):B(192.168.66.110)为方面,用户都为root 1.在A下生成公钥/私钥对命令:    ssh-keygen -t rsa -P ''-P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车.它在/root下生成.ssh目录,其他用户的话在对应的家目录下(/home/

ssh免密登陆(简单快捷)

介绍免密登陆配合下边这张图可以了解下过程: 假设现在A要通过免密登陆B 在A上的操作: 1.终端输入ssh-keygen (后边可以指定加密算法:-t 算法,如果不指定就是默认的rsa) 原理: 首先通过ssh-keygen命令生成密钥对(即公玥和私钥) 生成后密钥对会自动保存到/root/.ssh目录下,此目录下有两个文件即: id_rsa(私钥),id_rsa.pub(公钥) 2.终端输入ssh-copy-id 要连接的ip地址(如果本地/etc/hosts配置文件中有该地址的别名也可以用别

Linux系统ssh远程免密登录

在Linux运行过程中,有些特殊情况需要让不同Linux主机之间进行SSH免密登录,直观来看是免密登录,确切的说是通过秘钥验证登录. 一.实现原理 如A主机需要远程免密登录到B主机,那么需要在A主机上面通过工具生成秘钥对,即公钥和私钥.私钥用来解密,放置在A主机本地,公钥用来加密,放置在远端B主机. 二.示例 1.生成秘钥对 在A主机执行命令ssh-keygen -b 1024 -t rsa,无需更改参数,直接按几次回车即可. [[email protected] ~]# ssh-keygen

Linux终端设置免密登陆ssh(以 XShell 为例)

1.打开Xshell 2.在终端里生成免密登陆需要的密钥 2.导出公钥,存为来保存公钥.需要进一步把保存的公钥copy到远程服务器 3.Windows下可使用winscp工具或使用远程服务器的lszsz的rz来远程把客户端生成的公钥文件copy到需要免密登陆的服务器上,按路径copy文件后的目录如下: 4.将公钥改成需要的名字 5.修改/etc/ssh/sshd_config文件(建议修改此配置文件之前先把原来默认的备份一下) 主要添加项: RSAAuthentication yesPubkey