Xshell通过SSH密钥、SSH代理连接Linux服务器详解

Xshell通过SSH密钥、SSH代理连接Linux服务器详解

http://hi.baidu.com/kdsex/item/40205cc30a84d052ac00ef56

使用SSH客户端来登陆Linux系统,我相信大家肯定都用过,只是选择的SSH客户端的软件不同而已,在Windows系统下,用的比较多就应该就是PUTTY,SecureCRT,Xshell这三个吧。大家是不是曾经在进行服务器管理的时候,会遇到一些交互的处理问题,比如说自动化的命令需要密码的时候,我们就不能自动完成。所以我们会用到关于SSH密钥的一些问题,那么我今天就以Xshell为例,来给大家讲解一下如何用SSH登陆,而无需输入密码。当然,也可以通过Linux系统上的SSH来实现此功能,只是实现的方法略有不同。后面我也做个简单的教程出来供大家分享。

Xshell增加一个对话

在开始正式内容之前,我们先来看看Xshell的一个基本设置:新增一个会话(new session)



OK,现在我们进入我们今天的内容。这里做一个说明:系统为RHEL6,我们把他当作Linux服务器,本文由普通的用户名+密码认证、密钥认证、密钥+输入密钥密码认证、代理认证ssh-agent(密钥+密钥密码+无需密码输入)这四个内容来给大家讲解,希望能给大家一个抛砖引玉的作用。

1、普通的用户名+密码认证

这个不用多说,默认情况下,都是用用户名和密码来认证登陆的,自行增加一个会话,每次连接的时候,打开会话就OK了,具体的设置,可能参考上面的关于Xshell的基本设置。所以我们就略过,不过,如果说,你连这个都搞不定的话,那么,下面的内容也就无法时行下去了。哈哈……

2、密钥认证

所谓的密钥认证,就是在本地配置一个私钥和一个公钥,然后把公钥传要你想连接的服务器,就能实现无需输入用户名和密码的目的。这个就如同是制造了一个钥匙(私钥)和一把锁(公钥)一样,而这把锁可以复制到多台服务器,这样我只要用我的这个钥匙,就可以打开多个服务器的锁了。所以说,要启用密钥认证,关键就是制造钥匙和锁。下面就来看看,在Xshell上如何来制造。
选中我们新创建的会话,对其属性进行更改


配置认证的方式,并创建密钥

选择KEY相应的类型与长度


Xshell自动创建密钥文件

设置密钥文件名,我们这里先不为密钥设置密码

保存公钥文件

选择刚刚创建的私钥

设置登陆的用户

这样,我们就有了一个公钥和私钥了,接下来,就是把生成的公钥上传到服务器了。
我们直接用Xshell自带的一个sftp功能来上传我们生成的文件(我把公钥文件保存在我的WIN7系统桌面上)
打开Xshell后,应该出现下面的提示符
Xshell:\>
我们需要设置一下本地的工作目录,方便我们上传文件(如下图)

我们用sftp来连接远程的服务器,然后上传我们的公钥文件
Xshell:\> sftp root@192.168.6.10
这时候不要选择私钥登陆啊,因为我们还没有进行配置,所以必需使用密码登陆(如图)

Connecting to 192.168.6.10:22…
Connection established.
Escape character is ‘^@]’.
Your current local directory is
C:\Users\Administrator\Desktop
Type `help’ to browse available commnands.
sftp:/root>
出面上面的提示,就表示我们登陆上服务器了,关于SFTP的命令命令,大家可以用help来查看帮助。下面我们就向服务器传文件了
我们在服务器的root目录下保存我们的公钥,当然,你可以放到其他的位置,只是这个文件的位置,我们需要记住,因为后面的SSHD设置需要他。
sftp:/root> put id_rsa_2048.pub
Uploading id_rsa_2048.pub to remote:/root/id_rsa_2048.pub
sftp:/root/.ssh> exit

OK,我们上传上去了,下面我们就用SSH的普通方法(用户名和密码)登陆服务器,然后修改我们的sshd_config配置文件,启用密钥认证,关闭用户名、密码认证。
Xshell:\> ssh root@192.168.6.10
还是先用用户名密码来登陆
[root@yufei ~]# vim /etc/ssh/sshd_config
启用下面两个内容,并设置好相应的公钥文件位置
PubkeyAuthentication yes
AuthorizedKeysFile /root/id_rsa_2048.pub
关于密码认证,我们暂时先不关闭,以防万一啊!!
也就是PasswordAuthentication yes这个先不禁止。
保存退出后,重新启动SSHD服务
[root@yufei ~]# service sshd restart
注意:如果你的系统是RHEL6,并且没有关掉SELinux的话,在登陆的时候,你会发现始终需要你输入密码,而我们并没有设置密码啊,这是为什么呢?刚开始的时候我也很奇怪,我在RHEL5上测试是正常的,可一到RHEL6上就是不行,折腾了半天,发现是SELinux惹的祸啊!没有关系,我们关闭掉他就OK了。
[root@yufei ~]# setenforce 0
[root@yufei ~]# exit
这时候,你就可以重新换用密钥方式登陆了,已经无需输入任何密码。

3、密钥+输入密钥密码认证

和上面是一样的,只是在创建证书的时候,输入密码就可以了,注意,一定要把原来客户端的证书文件换成现在的,如果还是用以前的话,会导致你远程的SSH登陆不上系统了。

设置了密钥的密码后,在使用密钥登陆的时候,就需要输入相应的密钥密码,输入后,就能正常登陆了。但这虽然增加了安全性,但他的交互性又没有了,想要既使用密钥+密钥密码方式来登陆,又不输入密码,就需要用ssh-agent来实现。

4、代理认证ssh-agent(密钥+密钥密码+无需密码输入)

在上面认证的基础上,我们在服务器上再次配置sshd_config文件
开启
AllowAgentForwarding yes
重新启动
然后在Xshell中开启Agent方式


只要上面的没有问题,那么我们就可以用Xshell再次登陆测试了,这次登陆,只需要输入一次密钥密码,以后都无需再输入密码了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值